Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL选择早于X的非标准日期_Mysql_Date - Fatal编程技术网

Mysql SQL选择早于X的非标准日期

Mysql SQL选择早于X的非标准日期,mysql,date,Mysql,Date,我试图选择一个不是标准格式的日期字段,并且只选择比X天数早的日期。做了一些搜索,在这里找到了一些例子,但我似乎无法让我的工作 我的日期格式如下:2014年12月3日星期三09:00:46 位于以下列中:rundate(TEXT) 从myTable中选择*,其中rundate

我试图选择一个不是标准格式的日期字段,并且只选择比X天数早的日期。做了一些搜索,在这里找到了一些例子,但我似乎无法让我的工作

我的日期格式如下:2014年12月3日星期三09:00:46 位于以下列中:rundate(TEXT)

从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)