MySQL将日期字符串与日期列进行比较

时间:2014-11-17 01:26:08

标签: mysql

我有这个查询

SELECT * FROM tracklogs.sms_outbound
WHERE gsmno = 'rk4@*******.com.ph'
AND cdate > cast('2013/11/14 09:44:48 PM' as datetime)

其中cdate格式位于%Y-%m-%d %h:%i:%s %p

我已尝试将日期转换为该格式,然后将其转换为日期时间但仍然无法正常工作。

2 个答案:

答案 0 :(得分:2)

使用STR_TO_DATE()将您提供的日期时间字面值正确转换为正确的DATETIME值。您的cdate列似乎是char()varchar()列。因此,您还需要将其转换为DATETIME以进行比较。

你需要的是:

就像这样(http://sqlfiddle.com/#!2/d41d8/48741/0

STR_TO_DATE(cdate, '%Y-%m-%d %h:%i:%s %p') >
 STR_TO_DATE('2013/11/14 09:44:48 PM', '%Y/%m/%d %h:%i:%s %p')

将这些字符串转换为DATETIME数据项可确保比较正确处理日期和时间。看到这个小提琴(http://sqlfiddle.com/#!2/d41d8/48743/0

但是,您应该考虑将cdate项目更改为DATETIME,因为这样您就可以将其编入索引并加快搜索速度。

答案 1 :(得分:-1)

SELECT * FROM tracklogs.sms_outbound 
WHERE gsmno = 'rk4@*******.com.ph' 
AND UNIX_TIMESTAMP(str_to_date(cdate,'%Y-%m-%d %H:%i:%s')) > UNIX_TIMESTAMP('2013-11-14 09:44:48')