MySQL 是一个关系型数据库管理系统,广泛用于存储和管理数据。在 MySQL 中,日期和时间可以通过 DATE
、DATETIME
、TIMESTAMP
等数据类型来表示和处理。
DATE
:仅存储日期,格式为 YYYY-MM-DD
。DATETIME
:存储日期和时间,格式为 YYYY-MM-DD HH:MM:SS
。TIMESTAMP
:存储日期和时间,并且会根据时区的变化自动调整时间。假设我们有一个表 orders
,其中有一个 order_date
字段,类型为 DATETIME
,我们需要查询出所有 30 天前的订单。
SELECT *
FROM orders
WHERE order_date >= DATE_SUB(NOW(), INTERVAL 30 DAY);
NOW()
:获取当前日期和时间。DATE_SUB(date, INTERVAL expr unit)
:从日期 date
中减去指定的时间间隔 INTERVAL expr unit
。expr
:要减去的时间量。unit
:时间单位,如 DAY
、MONTH
、YEAR
等。原因:可能是由于时区设置不正确,导致 NOW()
函数返回的时间不准确。
解决方法:
CONVERT_TZ()
函数进行时区转换。SELECT *
FROM orders
WHERE order_date >= DATE_SUB(CONVERT_TZ(NOW(), '+00:00', 'Asia/Shanghai'), INTERVAL 30 DAY);
通过以上方法,可以准确地查询出 30 天前的订单数据。
领取专属 10元无门槛券
手把手带您无忧上云