当我是 PHP 的初学者时,我创建了我的数据库来将日期和时间一起存储,现在我遇到了一个大问题,我已经在数据库中有超过 3000 个订单但是当我想用日期进行搜索时遇到大麻烦,因为日期和时间在一个字段中,我试图进行查询,where date LIKE '%$date'
但我没有得到任何结果,有人知道我现在能做什么吗?
还有我怎样才能改变整个数据库,它应该是所有日期和时间,它不应该影响我的数据库?
更新:
数据库中的数据看起来像,10/16/2012 5:00pm
感谢任何帮助。
当我是 PHP 的初学者时,我创建了我的数据库来将日期和时间一起存储,现在我遇到了一个大问题,我已经在数据库中有超过 3000 个订单但是当我想用日期进行搜索时遇到大麻烦,因为日期和时间在一个字段中,我试图进行查询,where date LIKE '%$date'
但我没有得到任何结果,有人知道我现在能做什么吗?
还有我怎样才能改变整个数据库,它应该是所有日期和时间,它不应该影响我的数据库?
更新:
数据库中的数据看起来像,10/16/2012 5:00pm
感谢任何帮助。
为什么是 %$日期?你应该做相反的事情。
WHERE date LIKE "".$date."%"
您可以执行以下操作:
$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'
针对您问题的各个部分:
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
. 一旦您可以验证读取是否按计划工作,请切换您的开发环境以从新列中读取并进行测试,直到您确信一切正常。
如果是 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';
这对我有用
$日期=“2018-05-13”;
"SELECT * FROM $username WHERE reg_date LIKE '%$date%'";