我将日期存储为 updatedOn (值如 '2012-11-12 12:38:43')
我的疑问是:
select * from mytable
where updatedOn >= '11/12/2012' AND updatedOn <= '11/12/2012'
我的目标是获取所有记录,包括给定from
和to
日期
如果您避免<=
并<
改为使用,那么无论您的数据是否具有时间组件,您最终都将被迫使用有效的逻辑。
SELECT
*
FROM
myTable
WHERE
updatedOn >= '2012-12-11'
AND updatedOn < '2012-12-11' + INTERVAL '1' DAY
您需要获取列的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')
你需要尝试
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 指出的那样,我还需要考虑毫秒
您应该使用 DATE 功能 -
SELECT
*
FROM
mytable
WHERE
DATE(updatedOn) = '2012-12-11'