SQL Server中执行date <= datetime比较时的行为机制问询
SQL Server中date与datetime比较的行为解析
当执行date <= datetime这类跨数据类型的日期比较操作时,SQL Server会按照数据类型优先级规则处理:
- datetime类型的优先级高于date类型,因此会自动将
date类型的数值转换为datetime类型,再执行比较。 - 转换时,date类型的日期会被补全时间部分为
00:00:00.000,比如date '2024-05-20'会被转换为datetime '2024-05-20 00:00:00.000'。
举个实际验证的例子:
DECLARE @myDate date = '2024-05-20'; DECLARE @myDatetime datetime = '2024-05-20 14:30:00.000'; SELECT CASE WHEN @myDate <= @myDatetime THEN '成立' ELSE '不成立' END AS 比较结果;
执行后会返回成立,因为@myDate被转成了2024-05-20 00:00:00.000,显然小于@myDatetime的时间值。
另外需要明确:
- 不管使用
<=、>=还是其他比较运算符,转换规则完全一致——始终是低优先级的date类型向高优先级的datetime类型转换,不会将datetime转为date类型。
内容的提问来源于stack exchange,提问作者Jens Wagemaker
相关产品推荐
相关产品推荐

