Mysql SQL选择早于X的非标准日期
我试图选择一个不是标准格式的日期字段,并且只选择比X天数早的日期。做了一些搜索,在这里找到了一些例子,但我似乎无法让我的工作 我的日期格式如下:2014年12月3日星期三09:00:46 位于以下列中:rundate(TEXT)Mysql SQL选择早于X的非标准日期,mysql,date,Mysql,Date,我试图选择一个不是标准格式的日期字段,并且只选择比X天数早的日期。做了一些搜索,在这里找到了一些例子,但我似乎无法让我的工作 我的日期格式如下:2014年12月3日星期三09:00:46 位于以下列中:rundate(TEXT) 从myTable中选择*,其中rundate
从myTable中选择*,其中rundate
我得到的错误如下:函数myDB.DATEADD不存在
你知道我该怎么做吗?我的最终目标是删除旧记录,但现在选择它们将是伟大的!希望你能帮忙
干杯您正在寻找的函数是(请注意下划线)。 此外,与其比较日期的文本表示形式(即,将两者转换为字符串),不如将字符串转换为日期:
SELECT *
FROM myTable
WHERE STR_TO_DATE(rundate, '%a %b %e %T %Y') <
DATE_ADD(CURDATE(), INTERVAL -5 DAY)
谢谢你的回复。我尝试了这两个查询,但得到了相同的错误:myTable.GETDATE不存在。我不知道为什么我会想到这是MS-SQL。在MySQL中,当前日期是
curdate()
,而不是getdate()
-请参阅我编辑的答案。非常感谢。更新的脚本正在运行。我只是想确认上面的两个例子都做了大致相同的事情,还是我遗漏了什么?他们似乎都选择了最近5天之后的所有记录。@Plexter是的,两个例子做的完全相同。我只是想指出,使用date\u sub
进行减法比使用带有负值的date\u add
更直观。
SELECT *
FROM myTable
WHERE STR_TO_DATE(rundate, '%a %b %e %T %Y') <
DATE_ADD(CURDATE(), INTERVAL -5 DAY)
SELECT *
FROM myTable
WHERE STR_TO_DATE(rundate, '%a %b %e %T %Y') <
DATE_SUB(CURDATE(), INTERVAL 5 DAY)