在数据库PHP中搜索日期

时间:2012-06-20 16:24:15

标签: php mysql database phpmyadmin

当我是PHP的初学者时,我让我的数据库将日期和时间存储在一起,现在我有一个大问题,我已经在数据库中超过3000个订单但是当我想要进行搜索时约会,我遇到了大麻烦,因为日期和时间在一个字段中,我试着像where date LIKE '%$date'那样进行查询,但我没有得到任何结果,有人知道我现在能做什么吗?

另外,如何更改整个数据库应该是所有日期和时间,它不应该影响我的数据库?

更新:

数据库中的数据类似于10/16/2012 5:00pm

感谢任何帮助。

4 个答案:

答案 0 :(得分:5)

为什么%$约会?你应该做相反的事情。

WHERE date LIKE "".$date."%"

答案 1 :(得分:2)

您可以执行以下操作:

$date = "2012-03-08";
$sql = "SELECT * FROM table WHERE date => '$date 00:00:00' AND date =< '$date 23:59:59'

编辑:看到你的编辑,这不再适用了。您需要将日期列转换为正确的MySQL日期时间或TIMESTAMP类型。

在当前的数据库设计中,您可以使用以下内容:

日期

$date = "10/16/2012";
$sql = "SELECT * FROM table WHERE date LIKE '$date%'

时间

$time = "5:00pm";
$sql = "SELECT * FROM table WHERE date LIKE '%$time'

答案 2 :(得分:2)

回答你问题的各个部分:

1。在当前架构中查找所需的日期。

根据您的修改,使用:

 <?php

 $query = "SELECT * FROM table_name WHERE `date` LIKE '{$date}%'";

 ?> 

<击> 类似于您发布的查询应该可以帮助您:

<?php

$query = "SELECT * FROM table_name WHERE `date` LIKE '%{$date}%'";

?>

请注意,您在问题中使用%'%$date')只会匹配以$date结尾的值,而我的示例中的模式('%{$date}%')将匹配其中任意位置$date的值。或者,您可以使用'{$date}%'来匹配值开头的日期 - 不确定您想要的日期。

2。更新您的架构,将日期和时间分成两列。

您应该在此处采取的第一步是在表格中添加两列(date_onlytime_only)。接下来,更新您的代码,以便将此信息另外处理并存储到您当前使用的“一体化”date列中;您不希望通过一步切换来破坏当前的代码库。一旦您可以按照您希望的方式验证日期/时间数据,第三步是从新的日期/时间列读取(并记录)您的生产读取到date。一旦您可以验证读取是否按计划运行,请切换您的开发环境以阅读新列并进行测试,直到您确信所有内容都能正常工作。

答案 3 :(得分:1)

如果是DATETIME字段,您可以使用

WHERE DATE(datetime_field) = '01-01-2012';

或(更好,因为它可以使用索引)

WHERE datetime_field >= '01-01-2012 00:00:00' AND datetime_field <= '01-01-2012 23:59:59';