我正在尝试从两个不同日期之间的数据库表中获取所有值。问题是我的日期列包含日期为字符串,格式为'MM / DD / YYYY HH:MM'(即9/13/2012 13:15,10 / 14/2012 22:32,11 / 8/2012 12 :10等)。我可以使用SELECT和LIKE查询来获取包含传入任何日期字符串的所有行,但我需要选择某个范围之间的所有行(例如9/13/2012和9 /之间)二千零十二分之十五)。我是否需要转换为日期格式才能使其正常工作?
这是输入一个日期的代码:
$result=mysql_query("SELECT * FROM data WHERE data_time RLIKE '^$date_range1'");
但我需要在2个日期之间进行选择。我尝试了这个,但它不起作用:
$result=mysql_query("SELECT * FROM data WHERE data_time RLIKE BETWEEN '^$date_range1%' and '^$date_range2%");
答案 0 :(得分:2)
是的,您需要将日期转换为date
或datetime
类型。
否则订购将不起作用:作为文本,“11/02/2012”出现在“12/03/1901”之前,因为“11”小于“12”。
答案 1 :(得分:-1)
在data_time_copy
表格中创建新字段data
,然后运行下一个查询:
# field d is alias for your date_time
UPDATE data
SET date_time_copy = CONCAT(
SUBSTRING(d,7,4), '-', SUBSTRING(d,1,2), '-', SUBSTRING(d,4,2),
' ', SUBSTRING(d,12,5), ':00'
)
然后删除您的字段date_time
,并将date_time_copy
重命名为date_time
。并修复你的代码。
# field d is alias for your date_time
SELECT *
FROM data
WHERE
CONCAT(SUBSTRING(d,7,4), '-', SUBSTRING(d,1,2), '-', SUBSTRING(d,4,2))
BETWEEN '2012-09-13' AND '2013-09-15'