从mysql中选择,其中curdate()

xdnvmnnf  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(356)

在mysql表中,我有一个 INT(10)r_insert_time 我存储时间戳的地方。
现在我想选择r\u insert\u time=today的位置 CURDATE() ```
SELECT COUNT(*) FROM rdv WHERE u_id = ? AND r_insert_time = CURDATE()

现在它返回0个结果,尽管今天有值,如“1547043955”
我也试过:

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

以及

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

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

它们都返回0。
vh0rcniy

vh0rcniy1#

首先,检查 my_dt 字段存储为 YYYYMMDD ,如curdate()所需。如果是,则需要强制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)

相关问题