在 CakePHP 中编写代码时遇到了一个问题。
我想从现在()中删除过期时间小于 1 小时的所有行。我不想使用 date() 等 PHP 函数,因为我的 PHP 服务器时区和 MYsql 服务器时区不同。此外,我的会话令牌在 30 秒后过期,所以如果两台服务器都没有与实时正确同步,我无法承受时差错误。
我写下了这段代码
$this->deleteAll(array('SESSION_TRANSFER.EXPIRE_TIME <' =>
DboSource::expression('CURRENT_TIMESTAMP - INTERVAL 1 MINUTE')));
我的期望是
SELECT `SESSION_TRANSFER`.`SESS_TRANS_ID`
FROM `DISE`.`T_SESSION_TRANSFER` AS `SESSION_TRANSFER`
WHERE `SESSION_TRANSFER`.`EXPIRE_TIME` <
CURRENT_TIMESTAMP - INTERVAL 1
MINUTE
LIMIT 0 , 30
但它正在产生错误
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column
'SESSION_TRANSFER.EXPIRE_TIME <' in 'where clause'
SQL Query: SELECT `SESSION_TRANSFER`.`SESS_TRANS_ID`
FROM `DISE`.`T_SESSION_TRANSFER` AS `SESSION_TRANSFER`
WHERE `SESSION_TRANSFER.EXPIRE_TIME <` = CURRENT_TIMESTAMP - INTERVAL 1 hour
我也试过这个
$this->deleteAll(array('SESSION_TRANSFER.EXPIRE_TIME <'
=> 'CURRENT_TIMESTAMP - INTERVAL 1 MINUTE '));
查询不符合预期
SELECT `SESSION_TRANSFER`.`SESS_TRANS_ID`
FROM `DISE`.`T_SESSION_TRANSFER` AS `SESSION_TRANSFER`
WHERE `SESSION_TRANSFER`.`EXPIRE_TIME` < 'CURRENT_TIMESTAMP - INTERVAL 1 MINUTE '
有什么建议吗?我不想用 PHP 日期函数计算