我想允许我的用户在数据库中搜索某一天提交的行。使用date()
函数将日期输入数据库中的字段,这很好,但是当我使用php strtotime
函数时,日期并不完全相同。
是否有一些聪明的mysql函数可以帮助我解决这个问题?
答案 0 :(得分:3)
之前我遇到过这个问题。
您最好生成开始日期和结束日期,然后使用BETWEEN函数。
这样的事情:
$start_date = "2009-01-01 00:00:00";
$end_date = "2009-01-01 23:59:59";
$sql = "SELECT * FROM table WHERE date BETWEEN '$start_date' AND '$end_date' AND id = 'x';
当然,您只需使用strtotime从数据库中提取日期并附加时间戳 - 取决于您使用日期的方式()
希望这会有所帮助:)
答案 1 :(得分:3)
您可以使用MySQL的DATE()函数来提取时间戳的日期部分:
select ... from table ... where DATE(date_column) = '2010-01-25';
如果您在使用PHP提交“2010-01-25”时遇到问题,可以使用PHP的date function和“Y-m-d”作为参数来获取日期部分。
$d = date('Y-m-d', strtotime(...));
仔细观察你的问题,你似乎需要这两个。首先使用PHP的日期函数只获取日期部分,然后使用MySQL的日期仅匹配那些记录。
答案 2 :(得分:0)
PHP:
$timestamp_from_php = strtotime('December 25, 2009');
SQL:
select
`fields`
from
Table t
where
date_format('Y-m-d', t.`datetime_field`) = date_format('Y-m-d', '$timestamp_from_php')