Mysql日期比较包括给定的日期范围

时间:2012-11-12 15:05:25

标签: mysql sql

我将日期存储为updatedOn(值如'2012-11-12 12:38:43')

我的疑问是:

select * from mytable 
where updatedOn >= '11/12/2012' AND updatedOn <= '11/12/2012'

我的目标是在from&amp; to日期

4 个答案:

答案 0 :(得分:3)

如果您避免使用<=并使用<,那么无论您的数据是否具有时间组件,您最终都会被迫使用有效的逻辑。

SELECT
  *
FROM
  myTable
WHERE
      updatedOn >= '2012-12-11'
  AND updatedOn <  '2012-12-11' + INTERVAL '1' DAY

答案 1 :(得分:1)

您需要使用updatedOn列的DATE()组件,并在the formats supported by MySQL之一格式化日期文字:

SELECT *
FROM   mytable
WHERE  DATE(updatedOn) BETWEEN '2012-12-11'
                           AND '2012-12-11'

或者,使用MySQL的STR_TO_DATE()函数将字符串转换为MySQL日期:

SELECT *
FROM   mytable
WHERE  DATE(updatedOn) BETWEEN STR_TO_DATE('11/12/2012', '%d/%m/%Y')
                           AND STR_TO_DATE('11/12/2012', '%d/%m/%Y') 

答案 2 :(得分:1)

你需要尝试

select * from mytable 
where updatedOn >= '11/12/2012' AND updatedOn <= '11/12/2012 23:59:59.999'

当您写'11/12/2012'时,它意味着'11/12/2012 00:00:00',因此您还需要将时间添加到字符串

编辑:正如@Dems指出的那样,我还需要花费毫秒来考虑

答案 3 :(得分:0)

您应该使用DATE功能 -

SELECT
  *
FROM
  mytable
WHERE
  DATE(updatedOn) = '2012-12-11'