【问题标题】:How i should use date filter in where clause in MYSQL?我应该如何在 MYSQL 的 where 子句中使用日期过滤器?
【发布时间】:2020-03-27 05:11:19
【问题描述】:

用户输入

{
        "user_id": 1,
        "schedeuled_time": "22-03-2020"
    }

在数据库中,日期以日期时间格式存储 例如:-2020-03-22 15:30:00

我怎样才能准确过滤使用一个日期,因为下面的方法不适合。

 `SELECT
                        todo_id,
                        todo_item,
                        user_id,
                        DATE_FORMAT(schedeuled_time, '%d-%m-%Y') as 
                        schedeuled_date,
                        DATE_FORMAT(schedeuled_time, '%l:%i% %p') as 
                        schedeuled_time,
                        is_done,
                        is_time_passed
                     FROM to_do_table 
                     WHERE is_deleted = 0 AND
                     user_id = ${req.body.user_id} AND
                     schedeuled_time LIKE ('%${req.body.schedeuled_time}%')
                     order by schedeuled_time`

我只想使用一个日期 例如:-WHERE scheduled_time = '26-03-2020'

【问题讨论】:

    标签: mysql sql express


    【解决方案1】:

    我强烈建议您使用 查询参数, 并简单地提供日期或字符串 YYYY-MM-DD 作为该参数。 (许多后端,给定一个日期类型的变量,会简单地为你做。)

    【讨论】:

      【解决方案2】:

      您可以使用以下解决方案,使用DATE 仅获取日期时间的日期部分,使用STR_TO_DATE 获取用户输入的有效日期值:

      SELECT
        todo_id,
        todo_item,
        user_id,
        DATE_FORMAT(schedeuled_time, '%d-%m-%Y') AS schedeuled_date,
        DATE_FORMAT(schedeuled_time, '%l:%i% %p') AS schedeuled_time,
        is_done,
        is_time_passed
      FROM to_do_table 
      WHERE is_deleted = 0 
        AND user_id = ${req.body.user_id}
        AND DATE(schedeuled_time) = STR_TO_DATE('${req.body.schedeuled_time}', '%d-%m-%Y')
      ORDER BY schedeuled_time
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-05
        • 2022-05-05
        • 2013-04-23
        • 2010-12-12
        • 2015-10-19
        • 2011-11-25
        • 1970-01-01
        相关资源
        最近更新 更多