Sql server 比较2个日期之间的当前日期时间

Sql server 比较2个日期之间的当前日期时间,sql-server,tsql,Sql Server,Tsql,这是我的密码: declare @fdate varchar(50) declare @tdate varchar(50) declare @diff int declare @CalFromdate datetime declare @CalTodate datetime set @diff = 360 set @fdate = '2016-12-19 09:30:00' set @CalFromdate = DATEADD(mi,@diff,CONVERT(DATETIME, @fd

这是我的密码:

declare @fdate varchar(50)
declare @tdate varchar(50)
declare @diff  int 
declare @CalFromdate datetime
declare @CalTodate datetime

set @diff = 360
set @fdate = '2016-12-19 09:30:00'

set @CalFromdate = DATEADD(mi,@diff,CONVERT(DATETIME, @fdate))
print @CalFromdate

set @CalTodate = DATEADD(mi,@diff,CONVERT(DATETIME, @tdate))
print @CalTodate 
给我2016年12月19日下午3:30开始日期的

我不想要这种格式


“2016-12-19 09:30:00”或“2016-12-19 09:30:00:0000”。我想将当前日期
getdate()
与2个日期进行比较。如果我将上述输出格式与gatedate格式一起使用,它会工作吗?或者两者的格式应该相同

您只能看到格式为2016年12月19日下午3:30的日期,因为这是在打印
datetime
值时在SSMS中应用的完全任意格式

如果您将代码更改为
select
而不是
print
,您将以
2016-12-19 15:30:00.000
格式返回
datetime
值,但同样,这只是用于显示数据类型的任意格式

在查询中,
datetime
值实际上没有格式。它只是一个日期和时间。在比较中使用它,并担心在任何应用程序中显示数据的格式



另外,您也不需要在
@fdate
@tdate
参数上使用
convert
,因为您已经在
declare
语句中将它们指定为
datetime
值。

您只能看到格式为
Dec 19 2016 3:30PM
的日期,因为这是在SSMS中打印
datetime
值时应用的完全任意格式

如果您将代码更改为
select
而不是
print
,您将以
2016-12-19 15:30:00.000
格式返回
datetime
值,但同样,这只是用于显示数据类型的任意格式

在查询中,
datetime
值实际上没有格式。它只是一个日期和时间。在比较中使用它,并担心在任何应用程序中显示数据的格式



另外,您也不需要在
@fdate
@tdate
参数上使用
convert
,因为您已经在
declare
语句中将它们指定为
datetime
值。

日期不应该有格式,应该是日期(参数类型
date
/
datetime
)。日期/时间的格式是一个表示层概念,它严格适用于人类,因为这是我们感知周围世界的方式,包括信息。日期/时间实际上是一个特定的时间点,不要认为它有格式,因为它没有格式。因此,您应该关心的唯一一点是,日期/时间是如何显示的n它被输出给一个人,而不是如果你的代码关心格式,那么你就做错了。根据使用的语法,用
sql server
tsql
重新标记。其他人说了什么。将它们都转换为日期,这是你已经做过的,然后你可以比较它们。屏幕上输出了什么(就格式而言)是不相关的-您可以在打印语句中对此进行更改。您尚未为@tdate指定初始值。很难看出您的意图。日期不应该有格式,它们应该是日期(参数类型
date
/
datetime
)。日期/时间的格式是一个表示层概念,它严格适用于人类,因为这是我们感知周围世界的方式,包括信息。日期/时间实际上是一个特定的时间点,不要认为它有格式,因为它没有格式。因此,您应该关心的唯一一点是,日期/时间是如何显示的n它被输出给一个人,而不是如果你的代码关心格式,那么你就做错了。根据使用的语法,用
sql server
tsql
重新标记。其他人说了什么。将它们都转换为日期,这是你已经做过的,然后你可以比较它们。屏幕上输出了什么(就格式而言)是不相关的-您可以在打印语句中对此进行更改。您尚未为@tdate指定初始值。很难看出您的意图。