如何区分SQL Server中的字符串与datetime字面量?特殊格式判断
如何判断特定格式文本属于SQL Server的字符串还是datetime类型?
官方参考示例
datetime常量示例
'December 5, 1985' '5 December, 1985' '851205' '12/5/98'
字符串常量示例
'Cincinnati' 'O''Brien' 'Process X is 50% complete.' 'The level for job_id: %d should be between %d and %d.' "O'Brien"
判断逻辑与具体案例分析
判断核心是文本是否符合SQL Server认可的datetime格式,且能解析为合法的日期时间值,不满足则为字符串:
'2-Dec 2018':该格式符合SQL Server的datetime解析规则,2-Dec是合法的日+月份缩写,搭配2018是有效日期,因此属于datetime常量。'Dec 500, 2014':其中500超出了月份的最大天数限制(任何月份最多31天),无法解析为合法日期,因此只能作为字符串常量。
补充说明
SQL Server对datetime的判断本质是看文本能否被数据库引擎成功转换为datetime类型值。只要格式匹配且日期值合法(比如日期不超过当月最大天数、年份在datetime的有效范围1753-2079之间等),就会被识别为datetime常量;反之则按字符串处理。
内容的提问来源于stack exchange,提问作者David542
相关产品推荐
相关产品推荐

