我正在尝试选择不是标准格式的日期字段,只选择超过X天数的日期。做了一些搜索并在这里找到了一些例子,但我似乎无法让我的工作。
我的日期格式如下:2014年12月3日星期三09:00:46 它位于一列:rundate(TEXT)
SELECT * FROM myTable WHERE rundate < DATEADD((day, -5, GETDATE()), '%a %b %e %T %Y')
我得到的错误如下:FUNCTION myDB.DATEADD不存在
知道如何才能让它发挥作用吗?我的最终目标是删除旧记录,但现在选择它们会很棒!希望你能帮忙。
干杯
答案 0 :(得分:0)
您正在寻找的功能是date_add
(请注意下划线)。
此外,您应该将字符串转换为日期,而不是比较日期的文本表示(即将两者都转换为字符串):
SELECT *
FROM myTable
WHERE STR_TO_DATE(rundate, '%a %b %e %T %Y') <
DATE_ADD(CURDATE(), INTERVAL -5 DAY)
另外,如果你想减去日期,那么date_sub
可能会更直观:
SELECT *
FROM myTable
WHERE STR_TO_DATE(rundate, '%a %b %e %T %Y') <
DATE_SUB(CURDATE(), INTERVAL 5 DAY)