Sql server 如何在不删除SQL Server中的时间的情况下比较日期时间
如何在不删除时间的情况下比较SQL Server中的2个日期时间值?我只找到了他们将小时、分钟和秒指定为0的答案,但对于我正在执行的过程,比较小时也很重要Sql server 如何在不删除SQL Server中的时间的情况下比较日期时间,sql-server,Sql Server,如何在不删除时间的情况下比较SQL Server中的2个日期时间值?我只找到了他们将小时、分钟和秒指定为0的答案,但对于我正在执行的过程,比较小时也很重要 例如,我有以下两个日期,2020-02-07 12:14:39.997和2020-02-06 10:20:51.237。当试图比较第一个日期是否小于第二个日期时,第一个日期确实小于第二个日期,这是不正确的。您可以如下所示比较这两个日期 declare @firstDate datetime= '2020-02-07 12: 14: 39.99
例如,我有以下两个日期,
2020-02-07 12:14:39.997
和2020-02-06 10:20:51.237
。当试图比较第一个日期是否小于第二个日期时,第一个日期确实小于第二个日期,这是不正确的。您可以如下所示比较这两个日期
declare @firstDate datetime= '2020-02-07 12: 14: 39.997'
declare @secondDate datetime = '2020-02-06 10: 20: 51.237'
if(@firstDate > @secondDate)
begin
Select 'First date is greater' as [Decision]
end
else
begin
Select 'Second date is greater' as [Decision]
end
您可以比较两个日期,如下所示
declare @firstDate datetime= '2020-02-07 12: 14: 39.997'
declare @secondDate datetime = '2020-02-06 10: 20: 51.237'
if(@firstDate > @secondDate)
begin
Select 'First date is greater' as [Decision]
end
else
begin
Select 'Second date is greater' as [Decision]
end
为什么日期时间的格式是
yyyy-mm-dd hh:mi:ss.mmm
(注意hi
和mi
后面的空格)?这意味着它们被存储为varchar
。首先修复设计,然后担心比较。它们保存在ODBC规范(毫秒)中,默认为time、date、datetime2和datetimeoffsetDate和time数据类型没有格式@pete,它们是二进制值。因此,如果说“我使用的格式是yyyy-mm-dd hh:mi:ss.mmm(24小时)”,您就开始说“我不使用日期和时间数据类型来存储日期和时间。”SSMS等应用程序中的默认显示格式是yyy-mm-dd hh:mm:ss.nnnnnnn
,小时和分钟后没有空格。@pete澄清,数据库中列的数据类型是什么?请显示您正在使用的代码,该代码告诉您第一个日期时间值小于第二个日期时间值。为什么日期时间的格式为yyyy-mm-dd hh:mi:ss.mmm
(请注意hi
和mi
之后的空格)?这意味着它们被存储为varchar
。首先修复设计,然后担心比较。它们保存在ODBC规范(毫秒)中,默认为time、date、datetime2和datetimeoffsetDate和time数据类型没有格式@pete,它们是二进制值。因此,如果说“我使用的格式是yyyy-mm-dd hh:mi:ss.mmm(24小时)”,您就开始说“我不使用日期和时间数据类型来存储日期和时间。”SSMS等应用程序中的默认显示格式是yyy-mm-dd hh:mm:ss.nnnnnnn
,小时和分钟后没有空格。@pete澄清,数据库中列的数据类型是什么?请显示您正在使用的代码,该代码告诉您第一个日期时间值小于第二个日期时间值。