简体   繁体   English

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

[英]How to subtract hours from a datetime in MySQL?

I get a datetime field, that's currently in the query as:我得到一个日期时间字段,该字段当前在查询中为:

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

What I want to do is to subtract 3 hours from that date (GMT issues), but I can't do it in PHP as PHP only knows the date part, not the time.我想做的是从该日期减去 3 小时(GMT 问题),但我不能在 PHP 中执行此操作,因为 PHP 只知道日期部分,不知道时间。

mySQL has DATE_SUB() : MySQL具有DATE_SUB()

SELECT DATE_SUB(column, INTERVAL 3 HOUR)....

but would it not be better to try and sort out the underlying time zone issue instead? 但是尝试解决潜在的时区问题会更好吗?

Assuming you have some timezone issue and know source and destination timezone, you could convert it like so 假设您遇到一些时区问题,并且知道源和目标时区,则可以像这样转换它

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

Normal select query.正常select查询。 在此处输入图像描述

Once applied DATE_ADD() function in MySQL一旦在 MySQL 中应用DATE_ADD() function

select lastname, 
    date_add(changedat, interval -24 hour) as newdate
from employee_audit;

lastname and changedat is field name and employee_audit is table name. lastnamechangedat是字段名, employee_audit是表名。 在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM