我有 2 个格式化为 DATETIME 的 PHP 变量,但该列采用 UNIX 时间戳。我如何正确地对它们进行 BETWEEN 操作?
$date_from
和 $date_to
采用 DATETIME 格式。
dateline
存储为 UNIX 时间戳。
以下内容无效:
if($date_from != "" && $date_to != "") {
$result_pag_num = mysql_query("SELECT COUNT(*) AS count FROM messages WHERE (folder = '$folder' AND username = '$username' AND FROM_UNIXTIME(dateline) BETWEEN '$date_from' AND '$date_to')");
} else {
$result_pag_num = mysql_query("SELECT COUNT(*) AS count FROM messages WHERE (folder = '$folder' AND username = '$username')");
}
编辑:所有答案都很好。我接受了回复禁食的人。这个错误是我自己的错。
最佳答案
您可能希望将查询更改为
... AND dateline BETWEEN UNIX_TIMESTAMP('$date_from') AND UNIX_TIMESTAMP('$date_to')
这样MySQL就可以在日期线字段上使用索引。您的版本强制它在进行比较之前将每个日期行字段转换为日期时间值,从而无法使用索引。
否则,查询看起来不错。您确定 $date_from
和 $date_to
格式正确,并且存在适合查询中所有子句的记录吗?
关于php - MySQL FROM_UNIXTIME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5277589/