3

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

我的疑问是:

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

我的目标是获取所有记录,包括给定fromto日期

4

4 回答 4

3

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

SELECT
  *
FROM
  myTable
WHERE
      updatedOn >= '2012-12-11'
  AND updatedOn <  '2012-12-11' + INTERVAL '1' DAY
于 2012-11-12T15:09:02.637 回答
1

您需要获取列的DATE()组件updatedOn并将日期文字格式化为 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') 
于 2012-11-12T15:08:04.153 回答
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 指出的那样,我还需要考虑毫秒

于 2012-11-12T15:12:15.040 回答
0

您应该使用 DATE 功能 -

SELECT
  *
FROM
  mytable
WHERE
  DATE(updatedOn) = '2012-12-11'
于 2012-11-12T15:10:05.147 回答