0

我正在尝试从 2 个不同日期之间的数据库表中获取所有值。问题是我的日期列包含格式为“MM/DD/YYYY HH:MM”的字符串形式的日期(即 9/13/2012 13:15、10/14/2012 22:32、11/8/2012 12 :10等)。我可以使用 SELECT 和 LIKE 查询自行获取包含传入的任何日期字符串的所有行,但我需要选择一定范围内的所有行(如 2012 年 9 月 13 日和 9 日之间) 15/2012)。我是否需要转换为日期格式才能完成这项工作?

这是通过输入一个日期工作的代码:

$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%");
4

2 回答 2

2

是的,您需要将日期转换为dateordatetime类型。

否则排序将不起作用:作为文本,“11/02/2012”在“12/03/1901”之前,因为“11”小于“12”。

于 2012-09-26T21:26:07.487 回答
-1

1. 将您的字段 date_time 转换为 DATETIME 类型!

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_copydate_time. 并修复您的代码。

2.如果不能将字段类型更改为 DATETIME,请使用这种蹩脚的解决方案(矫枉过正)

# 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'
于 2012-09-26T21:41:07.893 回答