我对日期数据类型有疑问。我有一个 php mysql pdo 语句:
$mystmt = $mydb->prepare("
SELECT `ad_id`
FROM `tbl_actions`
WHERE
(`actiondate` > :nowcookietime )
");
$mystmt->execute(array(
':nowcookietime'=>date("Y-m-d H:i:s", time()-$cookiedurationlock),
)
);
$testnotinsql = $mystmt->fetch(PDO::FETCH_ASSOC); // EMPTY
代码运行返回空。但是,如果我从 general_log 获取下面的 sql 并在 sql 工具(HeidiSQL)中运行,它将返回记录。来自 general_log 的 SQL:
SELECT ad_id
FROM tbl_actions
WHERE
(actiondate> '2012-08-24 17:53:21' )
我的 PHP 时区是 UTC+7 Mysql 是 SYSTEM(哪个 UTC) 据我所知,如果使用相同的时区在 php 中插入和查询,这不是时区问题。
我用强制字符串测试绑定参数
':nowcookietime'=>date("Y-m-d H:i:s", time()-$cookiedurationlock),
但它同样是空的。
但是:如果使用引号,则返回行
':nowcookietime'=>"'".date("Y-m-d H:i:s", time()-$cookiedurationlock)."'",
你能澄清一下这句话有什么问题吗,因为我知道我们不需要报价,mysql pdo 报价给我们。
编辑1:
我更新了正确的sql。从测试中获取时,在 sql 中使用引号是我的错误。:nowcookietime 周围没有引号仍然是空的。
已关闭
请参阅下面的答案。