Ale*_*lex 46 sql-server date-arithmetic
我希望找到一个SQL语句,在执行时删除超过30天的字段.
我的表"events"有一个字段"date",其中包含在数据库中插入的日期和时间.
我现在不在家,所以我无法测试.这个好吗 ?
SELECT * from Results WHERE [Date] >= DATEADD(d, -30, getdate())
Run Code Online (Sandbox Code Playgroud)
Col*_*kay 101
在WHERE子句中使用DATEADD:
...
WHERE date < DATEADD(day, -30, GETDATE())
Run Code Online (Sandbox Code Playgroud)
您也可以使用缩写d或dd代替day.
Vik*_*han 11
你也可以使用
SELECT * from Results WHERE date < NOW() - INTERVAL 30 DAY;
Run Code Online (Sandbox Code Playgroud)
虽然这DATEADD可能是最透明的方式,但值得注意的是,这getdate()-30也足够了.
此外,您是否在寻找30天后,包括小时,分钟,秒等?或者从今天午夜起30天(例如12/06/2010 00:00:00.000).在这种情况下,您可以考虑:
SELECT *
FROM Results
WHERE convert(varchar(8), [Date], 112) >= convert(varchar(8), getdate(), 112)
Run Code Online (Sandbox Code Playgroud)
要从表中删除 Date_column 中日期时间值早于 30 天的记录,请使用以下查询:
USE Database_name;
DELETE FROM Table_name
WHERE Date_column < GETDATE() - 30
Run Code Online (Sandbox Code Playgroud)
...或这个:
USE Database_name;
DELETE FROM Table_name
WHERE Date_column < DATEADD(dd,-30,GETDATE())
Run Code Online (Sandbox Code Playgroud)
要从表中删除 Date_column 中日期时间值早于 12 小时的记录:
USE Database_name;
DELETE FROM Table_name
WHERE Date_column < DATEADD(hh,-12,GETDATE())
Run Code Online (Sandbox Code Playgroud)
要从表中删除 Date_column 中日期时间值早于 15 分钟的记录:
USE Database_name;
DELETE FROM Table_name
WHERE Date_column < DATEADD(mi,-15,GETDATE())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
153756 次 |
| 最近记录: |