如何从MySQL中的日期时间减去小时数?

Luc*_*lli 55 mysql datetime gmt

我得到一个datetime字段,当前在查询中:

SELECT DATE_FORMAT(x.date_entered, '%Y-%m-%d') AS date FROM x ORDER BY date ASC
Run Code Online (Sandbox Code Playgroud)

我想要做的是从该日期减去3个小时(GMT问题),但我不能用PHP来做,因为PHP只知道日期部分,而不是时间.

Pek*_*ica 96

mySQL有DATE_SUB():

SELECT DATE_SUB(column, INTERVAL 3 HOUR)....
Run Code Online (Sandbox Code Playgroud)

但尝试解决潜在的时区问题会不会更好?


web*_*kie 7

假设您有一些时区问题并且知道源时区和目标时区,您可以像这样转换它

SELECT DATE_FORMAT(CONVERT_TZ(x.date_entered, 'UTC', 'Europe/Berlin'),
                   '%Y-%m-%d') AS date
FROM x ORDER BY date ASC;
Run Code Online (Sandbox Code Playgroud)