【发布时间】:2013-10-23 03:24:40
【问题描述】:
所以我想知道我是否遇到了一个或多或少明显的问题。
假设我们有一个名为dateField 的数据库字段,它在日期时间中。我们还假设表中的所有记录都有这个值:2013-10-15 13:15:46。
现在我们要提取日期范围内的记录。我们在网站前端使用 2013-10-15 (yyyy-mm-dd) 格式。 (不,SQL 注入是不可能的。它通过 PDO。:D)
我们还假设 select 的 where 语句是这样插入的: $select->where('dateField >= ?', $dateFrom); $select->where('dateField
所以当我们有这样的范围时:
从: 2013-10-10 到: 2013-10-16 一切正常。
但是用这样的表达式: From: 2013-10-15 To: 2013-10-15 它显示没有结果! :D
我猜 MySQL 在内部将我的日期类型 2013-10-15 转换为 2013-10-15 00:00:00我的 WHERE 子句变为:
SELECT .... WHERE dateField <= 2013-10-15 00:00:00 AND dateField >= 2013-10-15 00:00:00;
当然在这种情况下 2013-10-15 13:15:46 不在我的 WHERE 子句中。 :D :D
我已经通过仅比较以下日期部分来解决此问题:
$select->where('DATE(dateField) >= ?', $dateFrom);
$select->where('DATE(dateField) <= ?', $dateTo);
但我的问题是:
谁能解释更多关于 MySQL 内部日期/日期时间转换(低级操作)的信息?
这个问题是否可以作为社区 wiki 的一个很好的补充?
【问题讨论】:
标签: mysql zend-framework mysqli php-5.2