我试图在sql语句中获得明天的日期进行日期比较,但它不起作用。
下面是我的代码:select *
from tblcalendarentries
where convert(varchar,tblcalendarentries.[Start Time],101)
= convert(varchar, GETDATE() +1, 101)
要获得明天的日期,您可以使用下面的代码,将在当前系统日期上添加1天:
SELECT DATEADD(day, 1, GETDATE())
获取当前日期()
返回当前数据库系统时间戳作为不含数据库时区偏移量的datetime值。此值是从运行SQL Server实例的计算机的操作系统派生的。
返回(datepart、数量、日期)
返回指定的日期,并将指定的数字间隔(带符号整数)添加到该日期的指定日期部分。
所以在WHERE
子句中添加以下内容:
WHERE CONVERT(VARCHAR, tblcalendarentries.[Start Time], 101) =
CONVERT(VARCHAR, DATEADD(DAY, 1, GETDATE()), 101);
首先,GETDATE()
将以以下格式为您提供今天的日期:
2013-04-16 10:10:02.047
然后使用DATEADD()
,允许您从指定日期添加(或减去如果需要)日期或时间间隔。所以间隔可以是:年、月、日、小时、分钟等。
使用时区吗?
如果您正在处理跨时区的系统,您可能还需要考虑使用GETUTCDATE()
:
GETUTCDATE ()
返回当前数据库系统时间戳作为datetime值。不包括数据库时区偏移量。该值表示当前UTC时间(协调世界时)。此值是从运行SQL Server实例的计算机的操作系统派生的。
尝试如下:
SELECT GETDATE() + 1
为当前日期添加一天
指定convert()
中varchar
的大小
where convert(varchar(11),tblcalendarentries.[Start Time],101) = convert(varchar(11), GETDATE() +1, 101)
我会写:
where
DATEADD(day,DATEDIFF(day,0,tblcalendarentries.[Start Time]),0) =
DATEADD(day,DATEDIFF(day,0,GETDATE()),1)
这避免了将日期完全转换为字符串,同时也从两个值中删除了时间部分。