代码之家  ›  专栏  ›  技术社区  ›  medk

从mySQL中选择CURDATE()

  •  0
  • medk  · 技术社区  · 6 年前

    在mySQL表中,我有一个 INT(10) r_insert_time

    现在我想选择r_insert_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。

    1 回复  |  直到 4 年前
        1
  •  2
  •   Numilani    6 年前

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

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

    还有,我不知道是什么 r_insert_time 是你不是想把CURDATE()和 我的 ? 在这种情况下:

    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)