Mysql日期格式为文本不起作用

时间:2015-06-17 06:30:21

标签: mysql

我有Mysql数据库和一个提交日期,数据类型为text,日期存储如下格式:

Jan 7, 2015 9:14:11 PM
Jan 8, 2015 9:14:11 AM
...

现在当我写下面的查询时:

select * from mydata where date>='Jan 7, 2015 9:14:11 PM' and date <='Jan 8, 2015 9:14:11 AM'

然后它显示数据库中的所有记录。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

这是sql。执行并查看结果

SELECT * FROM mydata WHERE DATE_FORMAT(DATE, mm dd, yyy hh:mm:ss) >=' Jan 7, 2015 9:14:11 PM' AND DATE_FORMAT(DATE, mm dd, yyy hh:mm:ss) <='Jan 8, 2015 9:14:11 AM'

我认为这对你有用。

谢谢。

答案 1 :(得分:0)

您必须使用str_to_date函数将文本转换为日期。然后你可以将它与你的约会进行比较。

select * from mydata where str_to_date(`date`,'%b %d, %Y %l:%m:%s %p')>=str_to_date('Jan 7, 2015 9:14:11 PM','%b %d, %Y %l:%m:%s %p') and str_to_date(`date`,'%b %d, %Y %l:%m:%s %p') <=str_to_date('Jan 8, 2015 9:14:11 AM','%b %d, %Y %l:%m:%s %p')

或者您可以在

之间使用更简短,更易读的语句
select * from mydata where str_to_date(`date`,'%b %d, %Y %l:%m:%s %p') between str_to_date('Jan 7, 2015 9:14:11 PM','%b %d, %Y %l:%m:%s %p') and  str_to_date('Jan 8, 2015 9:14:11 AM','%b %d, %Y %l:%m:%s %p')

答案 2 :(得分:0)

日期列名称使用反引号或双引号。它是mysql关键字。