Ram*_*Ram 1 sql t-sql sql-server sql-server-2005
我想这样做:
select * from table
where ChangingDate(this is a column which has date and time) = today's date + 1
Run Code Online (Sandbox Code Playgroud)
我是SQL的学习者,我在日期格式方面表现不佳.如果有人能提供帮助我感激不尽
谢谢!
这将返回明天的数据
WHERE ChangingDate > = dateadd(dd, datediff(dd, 0, getdate())+1, 0)
and ChangingDate < dateadd(dd, datediff(dd, 0, getdate())+2, 0)
Run Code Online (Sandbox Code Playgroud)
这将返回今天的数据
WHERE ChangingDate > = dateadd(dd, datediff(dd, 0, getdate())+0, 0)
and ChangingDate < dateadd(dd, datediff(dd, 0, getdate())+1, 0)
Run Code Online (Sandbox Code Playgroud)
在数据库中有一个日期时间的技巧 - 你几乎从不想要=比较,因为你看到它们还包括一个时间组件.相反,您想知道它是否属于包含整天的范围.Sql Server 2008有一个新的date类型可以帮助解决这个问题,但在升级之前,请执行以下操作:
WHERE (ChangingDate >= dateadd(dd,1, datediff(dd,0, getDate()))
AND ChangingDate < dateadd(dd,2, datediff(dd,0, getDate())))
Run Code Online (Sandbox Code Playgroud)
如果您确定所有记录都具有该列中时间组件的0值(或其他已知值),则可以进行等于比较.您不想做的是截断列,因为这意味着每个记录执行额外的工作(慢)并且会破坏您的索引(非常慢).