我正在尝试从我的 SQL 数据库中获取从今天到一个月前的记录。我使用 PHP 中的当前日期和一个月前的日期,并尝试将它们传递给我的 SQL 查询。不幸的是,我对数据库中日期的格式没有发言权,所以我肯定必须转换日期。
我以为我已经弄清楚了,但显然没有。
public function successRate()
{
$resultSet = $this->tableGateway->select(function(Select $select){
$now = date('y-m-d h:m:s');
$then = date('y-m-d h:m:s', strtotime('-1 month'));
$select->where("enddate between convert(datetime, '" . $then . "') and convert(datetime, '" . $now . "')");
});
return $resultSet;
}
所有这些东西都是框架的助手,没关系,但我想弄清楚的是第 6 行的查询 - 在“$select->where(”之后。
我在数据库本身中运行了这个查询并且它有效:
select * from jobhistory where enddate between convert(datetime, '2013-05-20 00:00:00') and convert(datetime, '2013-06-20 00:00:00')
但是我的 PHP 函数中的查询给出了这个错误:
“将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。”
我知道我的 $then 和 $now 变量是字符串,但我认为查询中的转换业务应该已经处理好了?我错过了什么。任何帮助将非常感激。