我有一个名为date_submitted的varchar列,它的格式如下:
03-06-2014 4:32 pm
02-14-2014 2:44 am
等等......
我想知道如何从某个日期或20天前的某个日期获得所有日期。这个选择语句与我需要的一致。
SELECT date_submitted FROM myTable WHERE date_submitted < 02-14-2014 12:00 am
答案 0 :(得分:2)
使用DATE_SUB
SELECT date_submitted
FROM myTable
WHERE STR_TO_DATE(date_submitted, '%m-%d-%Y') > DATE_SUB(DATE_FORMAT((NOW(),'%m-%d-%Y'), INTERVAL 20 DAY)
答案 1 :(得分:1)
您需要适当地CONVERT日期时间列,如下所示:
SELECT date_submitted FROM myTable
WHERE convert(datetime,date_submitted,100) < DATE_SUB(convert(datetime,'02-14-2014 12:00 am',100), INTERVAL 20 DAY)
答案 2 :(得分:0)
你需要这样的东西,否则你将比较一个字符串和一个日期,你赢了;得到好结果
SELECT date_submitted
FROM myTable
WHERE
date_format(str_to_date(date_submitted,'%m-%d-%Y %h:%i %p'), '%Y-%m-%d %H:%i:%s')
>DATE_SUB(NOW(), INTERVAL 20 DAY);