DateTime - 检查昨天的数据(SQLCe)

时间:2014-02-07 10:39:55

标签: sql datetime sql-server-ce

在我的应用程序中,我使用日期(存储为DateTime),就像我只使用日期部分一样。 对于今天发布的发票,我使用以下(工作正常):

WHERE DATEADD(D, 0, DATEDIFF(D, 0, IssuedOn))=DATEADD(D, 0, DATEDIFF(D, 0, GETDATE()))";

但是昨天发出的发票 - 当前日期前一天呢?我试图减去这些并检查结果是否为1但是不起作用。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

这是您所需要的,因为您使用的是sql-server 2005或更早版本:

WHERE 
IssuedOn >= DATEADD(D, 0, DATEDIFF(D, 1, GETDATE()))
and IssuedOn < DATEADD(D, 0, DATEDIFF(D, 0, GETDATE()))

可以这样缩短:

WHERE 
IssuedOn >= DATEDIFF(D, 1, GETDATE())
and IssuedOn < DATEDIFF(D, 0, GETDATE())

请记住标记版本和RDBMS

答案 1 :(得分:0)

如果希望索引有机会使用,请不要在列上应用任何函数。你的情况(今天)将写成:

WHERE IssuedOn >= DATEADD(day, 0 + DATEDIFF(day, '20000101', CURRENT_TIMESTAMP), '20000101')
  AND IssuedOn <  DATEADD(day, 1 + DATEDIFF(day, '20000101', CURRENT_TIMESTAMP), '20000101')

和昨天:

WHERE IssuedOn >= DATEADD(day, -1 + DATEDIFF(day, '20000101', CURRENT_TIMESTAMP), '20000101')
  AND IssuedOn <  DATEADD(day,  0 + DATEDIFF(day, '20000101', CURRENT_TIMESTAMP), '20000101')