当我是PHP的初学者时,我让我的数据库将日期和时间存储在一起,现在我有一个大问题,我已经在数据库中超过3000个订单但是当我想要进行搜索时约会,我遇到了大麻烦,因为日期和时间在一个字段中,我试着像where date LIKE '%$date'
那样进行查询,但我没有得到任何结果,有人知道我现在能做什么吗?
另外,如何更改整个数据库应该是所有日期和时间,它不应该影响我的数据库?
更新:
数据库中的数据类似于10/16/2012 5:00pm
感谢任何帮助。
答案 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_only
和time_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';