从mySQL选择CURDATE()

时间:2019-01-09 14:59:09

标签: mysql date datetime mysqli

在mySQL表中,我有一个INT(10)r_insert_time,用于存储时间戳。

现在我要选择r_insert_time =今天CURDATE()

SELECT COUNT(*) FROM rdv WHERE u_id = ? AND r_insert_time = CURDATE()

现在,尽管今天存在诸如“ 1547043955”之类的值,它仍将返回0个结果。

我也尝试过:

SELECT COUNT(*) FROM rdv WHERE u_id = ? AND r_insert_time >= CURDATE()

AND

SELECT COUNT(*) FROM rdv WHERE u_id = ? AND DATE(r_insert_time) = CURDATE()

AND

SELECT COUNT(*) FROM rdv WHERE u_id = ? AND DATE(r_insert_time) >= CURDATE()

所有这些都返回0。

1 个答案:

答案 0 :(得分:1)

首先,检查CURDATE()所需的my_dt字段是否存储为YYYYMMDD。 如果是这样,则需要强制CURDATE()输出为数字而不是字符串以进行比较。

尝试:

SELECT COUNT(*) FROM rdv WHERE u_id = ? AND r_insert_time = CURDATE() + 0

此外,我不确定r_insert_time是什么。您不是要比较CURDATE()与my_dt吗?在这种情况下,将是:

SELECT COUNT(*) FROM rdv WHERE u_id = ? AND my_dt = CURDATE() + 0

编辑:

再看一遍,看起来您正在使用时代时间戳记。如果要进行比较,则需要使用UNIX_TIMESTAMP()之类的东西来查找时间戳可能落入的时间范围。

尝试以下方法:

SELECT COUNT(*) FROM rdv WHERE u_id = ? AND r_insert_time >= UNIX_TIMESTAMP(CURDATE()) AND r_insert_time < UNIX_TIMESTAMP(CURDATE() + 1)