SQL选择比X更旧的非标准日期

时间:2014-12-03 17:58:11

标签: mysql date

我正在尝试选择不是标准格式的日期字段,只选择超过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不存在

知道如何才能让它发挥作用吗?我的最终目标是删除旧记录,但现在选择它们会很棒!希望你能帮忙。

干杯

1 个答案:

答案 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)