【问题标题】:MySQL Query to display records based on timeMySQL Query 根据时间显示记录
【发布时间】:2014-03-06 16:38:15
【问题描述】:

您好,我创建了一个包含以下字段的事件表:

  • 标题
  • 开始日期
  • 结束日期
  • 场地

我想要一个查询来显示已开始但尚未完成的事件,以及另一个查询来显示尚未开始的事件。

【问题讨论】:

  • 你能再澄清一点吗?到目前为止,您尝试过什么?
  • start-dateend-date 使用什么数据类型(日期、日期时间、时间戳、整数...)?
  • 我不确定它们是什么数据类型,因为我在 drupal 中创建了字段(我是 mysql 新手)
  • 我们如何知道它何时启动?
  • 在mysql客户端执行desc events;并在此处发布结果

标签: mysql


【解决方案1】:

如果我正确理解您想要实现的目标并假设 startdateenddateDATETIME 类型,您可以这样做

-- started but not finished
SELECT *
  FROM events
 WHERE startdate <= NOW()
   AND enddate > NOW();

示例输出(当前日期/时间为March, 06 2014 16:28:26+0000):

|身份证 |标题 |开始日期 |结束日期 |场地 | |----|--------|------------------|---- --------------------------|--------| | 2 |事件2 | 2014 年 3 月 4 日 16:22:55+0000 | 2014 年 3 月 8 日 16:22:55+0000 |场地2 |
-- not started yet
SELECT *
  FROM events
 WHERE startdate > NOW();

示例输出(当前日期/时间为March, 06 2014 16:28:26+0000):

|身份证 |标题 |开始日期 |结束日期 |场地 | |----|--------|------------------|---- --------------------------|--------| | 3 |活动3 | 2014 年 3 月 8 日 16:22:55+0000 | 2014 年 3 月 11 日 16:22:55+0000 |场地3 |

这里是SQLFiddle演示

【讨论】:

    【解决方案2】:

    假设数据字段在设置之前都是空字符串:

    select * from events where start-date!='' and end-date='';
    select * from events where start-date='';
    

    还有 How to do a SQL NOT NULL with a DateTime?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-10
      • 1970-01-01
      相关资源
      最近更新 更多