【问题标题】:Select from table where date and time values are in separate columns从日期和时间值位于不同列中的表中选择
【发布时间】:2014-12-10 20:01:33
【问题描述】:

我有一个值为“2014-10-10”的 dateColumn 和一个值为“10:10:44”的 startTimeColumn。如何从表中选择 dateColumn 介于“startDate”和“endDate”之间以及“startDate”上的 startTimeColumn 大于或等于“startTime”的所有内容?

这就是我的意思:(我知道这行不通,但它只是为了表明我的意思)

SELECT * FROM table1 WHERE dateColumn BETWEEN 'startDate' AND 'endDate' AND IF TRUE(
    IF(dataColumn == 'startDate')
        THEN IF(startTimeColumn >= 'startTime')
            RETURN TRUE
        ELSE
            RETURN FALSE
    ELSE
        RETURN TRUE
);

我正在使用 MySQL,但无法使用 SQL 函数。

【问题讨论】:

    标签: mysql sql date select time


    【解决方案1】:

    可能可以更好地利用您在这些字段上可能拥有的任何索引(尽管 OR 可能会干扰)

    WHERE (dateColumn > startDate AND dateColumn <= endDate) 
       OR (dateColumn = startDate AND startTimeColumn >= startTime)
    

    【讨论】:

      【解决方案2】:
      SELECT *
      FROM Table 
      WHERE CAST(DateColumn AS DATETIME) + CAST(TimeColumn AS DATETIME) 
             BETWEEN 'StartDateTime' AND 'EndDatetime'
      

      【讨论】:

        【解决方案3】:

        结合日期和时间列

        SELECT * FROM table1 
        WHERE timestamp(dateColumn, startTimeColumn) BETWEEN 'startDateAndTime' 
                                                         AND 'endDateAndTime'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-01-24
          • 1970-01-01
          • 1970-01-01
          • 2021-09-09
          • 1970-01-01
          • 1970-01-01
          • 2012-11-03
          相关资源
          最近更新 更多