我有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'
然后它显示数据库中的所有记录。
我该如何解决这个问题?
答案 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关键字。