dongmei8511 2017-12-31 11:35
浏览 39
已采纳

如何从sql中的特定日期获取数据

I am trying to get the data of the current date in MySQL. I have a column named created_at which stores the date and time (2017-12-31 11:32:54)using the NOW() function using the statements,

    $stmt = $this->conn->prepare("INSERT INTO log(id, name, created_at) VALUES(?, ?, NOW())");
    $stmt->bind_param("ss", $id, $name);
    $result = $stmt->execute();

Now I want to ignore the time in the created_at column and retrieve the data of the current date (today's date).

I tried using this query,

SELECT * FROM log WHERE created_at = DATE_SUB(CURDATE(), INTERVAL 0 DAY)

But this results in zero rows selected.

Please help me solve this issue.

  • 写回答

2条回答 默认 最新

  • dongyi2993 2017-12-31 11:38
    关注

    One option would be to wrap created_at with DATE(), and then compare to CURDATE():

    SELECT *
    FROM log
    WHERE DATE(created_at) = CURDATE();
    

    But this has the drawback of precluding the possibility of using an index on the created_at column. We could also phrase this as follows:

    SELECT *
    FROM log
    WHERE created_at >= CURDATE() AND created_at < CURDATE() + INTERVAL 1 DAY;
    

    This would allow an index to be used on created_at, though it is a bit more verbose.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)