在mysql中使用两个范围之间的LIKE选择

时间:2012-09-26 21:24:22

标签: php mysql between sql-like

我正在尝试从两个不同日期之间的数据库表中获取所有值。问题是我的日期列包含日期为字符串,格式为'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%");

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:-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_copy重命名为date_time。并修复你的代码。

2。如果您无法将字段类型更改为DATETIME,请使用此lame解决方案(overkill)

# 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'