【问题标题】:Edit on existing query to search if time is between start date and end date编辑现有查询以搜索时间是否介于开始日期和结束日期之间
【发布时间】:2012-07-25 01:36:25
【问题描述】:

用户通过表单选择日期+时间,然后在提交时,代码运行此查询

ABS(TIMESTAMPDIFF( HOUR , `start`, :time )) < 2

查找start 与选定日期之间的差小于 2 的所有行。

但是,我现在添加了一个新字段 end,其中包含事件的结束日期+时间。

我的问题是我应该如何编辑现有查询以返回所选日期在 startend 之间的所有行?

这是选中开始结束日期+时间的格式:2012-07-25 04:30

【问题讨论】:

    标签: php mysql sql date


    【解决方案1】:

    使用BETWEEN

    WHERE selected_date BETWEEN start AND end
    

    引用手册关于使用BETWEEN 的日期:

    为了在将 BETWEEN 与日期或时间值一起使用时获得最佳结果,请使用 CAST() 将值显式转换为所需的数据类型。示例:如果将 DATETIME 与两个 DATE 值进行比较,请将 DATE 值转换为 DATETIME 值。如果在与 DATE 的比较中使用字符串常量(例如 '2001-1-1'),请将字符串转换为 DATE。

    【讨论】:

    • 谢谢你。在我的情况下,所有输入都像 2012-07-25 04:30。那么我需要使用 CAST() 吗?
    • 如果它们的格式相同,并且它们是,那么你不需要使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    相关资源
    最近更新 更多