【问题标题】:mysql filter by date and time separatelymysql分别按日期和时间过滤
【发布时间】:2015-07-24 17:00:22
【问题描述】:

我必须对 MySQL 数据库执行查询。 我有一个记录表,有一个名为“日期”的列(日期类型)和一个名为“时间”的列(类型。通过将一天中的时间乘以 60 来存储整数。例如,上午 8 点存储为 480) . 遗憾的是,无法修改此表的格式。 我的桌子存储了值班医生的注意事项。值班医生分两班倒:8-20 和 20-8。 我需要知道每位医生的关注程度。 我的查询必须按日期范围和班次过滤。 问题是,对于在 20-8 岁工作的医生,我必须考虑换一天。 (对不起,我的英语不好)。 我所做的是这样,这将是昨天迄今为止的一个例子,医生轮班 20-8。

SELECT * FROM attentions WHERE (date >= '2015-07-23' and time >=1200) and (date <= '2015-07-24' and time <480)

查询根本不起作用。

【问题讨论】:

  • 使用 mysql_query() 或 die(mysql_error()) 时得到的错误信息是什么?
  • 我直接运行到mysql服务器。我没有错误。但不返回任何记录。如果我删除“and time

标签: mysql date time filter


【解决方案1】:

假设日期字段为:'a_date',格式为'yyyy-mm-ss',时间字段为数字,查询应为:

SELECT * FROM attentions WHERE (date(a_date) >= '2015-07-23' and time >=1200) and (date(a_date) <= '2015-07-24' and time <480)

【讨论】:

  • 如果值当前是日期,为什么要使用方法“date()”?
  • 因为,你想要的是日期,而不是字符串比较...但是字符串比较也可以,因为 year>month>day..
  • 你是对的,在我的例子中你不应该使用日期函数,但在你的例子中你应该。因为日期在 mysql 系统中是一个“严格”的词。您必须更改字段名称或使用 date(date) 才能使代码正常工作。
  • @ahmed,或者只是将字段名称转义为`date`
  • 我做了但没有工作。我认为问题在于时间过滤器。其实我真正的领域不叫“日期”,我把它说得很好以实现那种理解。因为实际上我说西班牙语
【解决方案2】:

你可以检查使用之间吗?

SELECT * FROM attentions WHERE 日期在 '2015-07-23' 和 '2015-07-24' 之间,时间在 1200 和 480 之间

【讨论】:

  • 我使用 between 编辑了查询,而不是 > 或
【解决方案3】:

我觉得你也可以用这个-

SELECT * FROM ***** 其中 CREATED_DATETIME 介于 '2015-03-12 00:00:00' 和 '2015-05-11 00:00:00' 之间;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2013-10-20
    • 2014-03-12
    • 2022-07-16
    • 1970-01-01
    相关资源
    最近更新 更多