2014-10-01 55 views
0

这是当前/旧的Access查询I inherited.Need检索过去的一年事件日志。如何在Where子句中编写更好的当前日期?需要更好的当前日期时间语法

Select (ID,DateLog,TimeLog) 
    From tblActiveCase 
    WHERE (((DatePart("yyyy",[DateLog])) Between DatePart("yyyy",Now())-1 And   
    DatePart("yyyy",Now()))) 

- 我的新StoredProc

Select (ID,DateLog,TimeLog) 
    From tblActiveCase 
    WHERE DateLog <= DATEADD(YEAR, -1, GETDATE()) 

有没有更好的方式来写呢?

+0

澄清:我需要得到当前的日期,到1年前。 – 2014-10-01 18:00:28

+2

我认为你需要'> =',而不是'<='。如果数据库中的日期是DateTime,那么最好将时间设置为00:00:00,否则如果您的查询在下午运行,则会错过一年前在早上创建的记录。 – 2014-10-01 18:35:30

+0

你可以澄清,如果你的意思是它是MS Access *或* SQL Server,后者是你标记你的问题。 – 2014-10-01 19:08:38

回答

0
declare @date date 
set @date = DATEADD(YEAR, -1, GETDATE()) 

    Select (ID,DateLog,TimeLog) 
     From tblActiveCase 
     WHERE DateLog >= @date 
+0

你可以在Access中使用'DECLARE'吗?我找到了它,但是找不到这样的东西。 – 2014-10-01 19:02:43

+0

哦!它被锁定SQL-SERVER-2008并且还提到了一个存储过程。现在我不确定我在说什么 – Horaciux 2014-10-01 19:04:00

+0

我已经添加了一条评论,要求OP澄清。使用SQL Server更容易。 – 2014-10-01 19:09:54

相关问题