soo*_*ise 74 sql t-sql sql-server datetime date
DELETE from Table WHERE Date > GETDATE();
Run Code Online (Sandbox Code Playgroud)
GETDATE()包括时间.而不是得到
2011-01-26 14:58:21.637
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到:
2011-01-26 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
gbn*_*gbn 78
对SQL Server略有偏见
摘要
DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
Run Code Online (Sandbox Code Playgroud)
SQL Server 2008 date虽然有类型.所以只需使用
CAST(GETDATE() AS DATE)
Run Code Online (Sandbox Code Playgroud)
编辑:要添加一天,请与"零"前一天进行比较
DATEADD(day, DATEDIFF(day, -1, GETDATE()), 0)
Run Code Online (Sandbox Code Playgroud)
来自cyberkiwi:
不涉及2个函数的替代方案是(+1可以在括号中或者在括号内).
DATEDIFF(DAY, 0, GETDATE() +1)
Run Code Online (Sandbox Code Playgroud)
DateDiff 返回一个数字但是出于所有目的,无论你打算使用这个表达式,它都可以作为一个日期,除了直接将它转换为VARCHAR - 在这种情况下你可以直接在GETDATE()上使用CONVERT方法,例如
convert(varchar, GETDATE() +1, 102)
Run Code Online (Sandbox Code Playgroud)
Ric*_*iwi 10
对于SQL Server 2008,最好的和索引友好的方式是
DELETE from Table WHERE Date > CAST(GETDATE() as DATE);
Run Code Online (Sandbox Code Playgroud)
对于以前的SQL Server版本,日期数学将比转换为varchar更快.由于区域设置,即使转换为varchar也会给您错误的结果.
DELETE from Table WHERE Date > DATEDIFF(d, 0, GETDATE());
Run Code Online (Sandbox Code Playgroud)
注意:没有必要DATEDIFF用另一个包装DATEADD
它是特定于数据库的.您尚未指定要使用的数据库引擎.
例如在PostgreSQL中你做了演员(myvalue as date).
SELECT CONVERT(DATETIME, CONVERT(varchar(10), GETDATE(), 101))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
110897 次 |
| 最近记录: |