Php 对DateTime字段的查询忽略小时和分钟
我正在编写一个PHP站点,其中我使用一些Mysql来访问数据库 我有一个名为Php 对DateTime字段的查询忽略小时和分钟,php,sql,date,datetime,mysqli,Php,Sql,Date,Datetime,Mysqli,我正在编写一个PHP站点,其中我使用一些Mysql来访问数据库 我有一个名为travel的表,它过去有一个名为date的字段,它来自type date(根据phpMyAdmin),还有一个PHP变量$date来自type string,它以格式“Y-m-d” 当我需要从日期与$date中指定的日期相同的表中获取所有元素时,我可以通过以下简单查询来完成: “从旅行中选择*日期=$date” 现在的问题是,我需要将数据库上的日期字段数据类型从date更改为DateTime,以同时存储小时和分钟 关于
travel
的表,它过去有一个名为date
的字段,它来自type date(根据phpMyAdmin),还有一个PHP变量$date
来自type string,它以格式“Y-m-d”
当我需要从日期与$date
中指定的日期相同的表中获取所有元素时,我可以通过以下简单查询来完成:
“从旅行中选择*日期=$date”
现在的问题是,我需要将数据库上的日期字段数据类型从date更改为DateTime,以同时存储小时和分钟
关于这个问题,我对小时和分钟不感兴趣。我只需要从表中获取所有元素,其中日期与$date
中指定的日期相同,而不考虑数据库字段中存储的小时和分钟数
为了实现这一目标,我需要改变什么
例如:
$date=“2030-12-25”
及
数据库
ID (int) date (DateTime)
1 1994-05-30 12:25:00
2 2030-12-25 15.20:00
3 2030-12-25 10:30:00
我需要得到ID为2和3的元素
PS:我知道有类似的问题,但由于不同的原因,没有一个对我有用
编辑:
妨碍我使这个查询正常工作的错误也出现在没有时间部分的旧实现上
我省略了$date变量的单引号,这导致DBMS无法将日期标识为字符串
旧查询:
“从旅行中选择*日期=$date”
“从旅行中选择*日期=“$date”
修复了在$date
此外,正如KIKO软件所回答的,新软件还应包括报价:
“从旅行中选择*日期(DATE)=“$DATE”;”
只需更改:
"SELECT * FROM travel WHERE date=$date"
致:
函数
DATE()
从列DATE
中获取日期部分。您可以使用preg\u match
获取日期的子字符串
例如:
preg_match(“/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/”,$date)
您需要使用date函数格式化数据库中的datetime字段
选择*FROM travel WHERE DATE(日期)='2018-07-15'快速修复方法将是
DATE(日期)='2030-12-25'
,但这将使您的查询不可搜索
"SELECT * FROM travel WHERE DATE(date) = '$date';"