2

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

还有我怎样才能改变整个数据库,它应该是所有日期和时间,它不应该影响我的数据库?

更新:

数据库中的数据看起来像,10/16/2012 5:00pm

感谢任何帮助。

4

5 回答 5

5

为什么是 %$日期?你应该做相反的事情。

WHERE date LIKE "".$date."%"
于 2012-06-20T16:30:33.820 回答
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'
于 2012-06-20T16:30:32.707 回答
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. 一旦您可以验证读取是否按计划工作,请切换您的开发环境以从新列中读取并进行测试,直到您确信一切正常。

于 2012-06-20T16:34:34.777 回答
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';
于 2012-06-20T17:47:51.347 回答
0

这对我有用

$日期=“2018-05-13”;

"SELECT * FROM $username WHERE reg_date LIKE '%$date%'";

于 2018-05-13T09:20:40.580 回答