在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。
答案 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)