所以我想知道我是否遇到了一个应该或多或少明显的问题。
因此,假设我们有一个名为dateField
日期时间的数据库字段。让我们还假设表中的所有记录都有这个值2013-10-15 13:15:46
:
现在我们想提取日期范围内的记录。yyyy-mm-dd
我们在网站前端使用 2013-10-15 ( ) 格式。(不,SQL 注入是不可能的。它通过 PDO。:D)
我们还假设 select 的 where 语句是这样插入的: $select->where('dateField >= ?', $dateFrom); $select->where('dateField <= ?', $dateTo);
所以当我们有这样的范围时:
从: 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 的一个很好的补充?