明天约会

时间:2013-04-16 09:56:44

标签: sql sql-server

我试图让som语句中的明天日期为日期比较,但它无法正常工作。

以下是我的代码:

select * 
from tblcalendarentries
where convert(varchar,tblcalendarentries.[Start Time],101) 
      = convert(varchar, GETDATE() +1, 101)

5 个答案:

答案 0 :(得分:36)

要获得明天的日期,您可以使用以下代码,该代码将在当前系统日期添加1天:

SELECT DATEADD(day, 1, GETDATE())
  

GETDATE()

     

将当前数据库系统时间戳记作为没有数据库时区偏移量的日期时间值返回。此值派生自运行SQL Server实例的计算机的操作系统。

     

DATEADD(datepart , number , date)

     

返回指定的日期,并将指定的数字间隔(有符号整数)添加到该日期的指定日期部分。

所以在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()

     

将当前数据库系统时间戳记作为日期时间值返回。不包括数据库时区偏移量。该值表示当前UTC时间(协调世界时)。此值派生自运行SQL Server实例的计算机的操作系统。

答案 1 :(得分:5)

尝试以下方法:

SELECT GETDATE() + 1

这会在当前日期增加一天

答案 2 :(得分:2)

varchar

中指定convert()的尺寸
where convert(varchar(11),tblcalendarentries.[Start Time],101) = convert(varchar(11), GETDATE() +1, 101)

答案 3 :(得分:0)

我会写:

where
  DATEADD(day,DATEDIFF(day,0,tblcalendarentries.[Start Time]),0) =
  DATEADD(day,DATEDIFF(day,0,GETDATE()),1)

这样可以避免将日期完全转换为字符串,同时还可以从两个值中删除时间部分。

答案 4 :(得分:-2)

我认为如果您在日期中添加一个,它将给出第二天的日期。

 DATE+1

那应该没问题。抱歉,我无法在此处访问代码SQL SERVER来提供代码