如何在 MySql 选择查询中将 UTC 日期转换为本地时区

     2023-03-24     55

关键词:

【中文标题】如何在 MySql 选择查询中将 UTC 日期转换为本地时区【英文标题】:How to Convert UTC Date To Local time Zone in MySql Select Query 【发布时间】:2013-02-07 16:39:43 【问题描述】:

我在 MySql 数据库的一个查询中使用此 Where 条件。我的问题是我的表中有一个显示时间列,但该表列以 UTC 时间显示数据。我想将该显示时间列转换为本地时区。所以我如何从查询本身提供这个设施。

我已经仔细检查了这些东西,因此我知道像 SELECT CONVERT_TZ() 这样的东西可以解决这个问题。但它不适合我。

这是我的查询,我需要将显示时间转换为本地时区...所以有人可以指导我吗?

WHERE displaytime >= '2012-12-01 00:00:00'
  AND displaytime <='2013-02-22 23:59:59'
  AND ct.organizationId IN (
    SELECT t.organizationId
      FROM organization_ AS t
      JOIN organization_ AS p ON t.treePath LIKE CONCAT(p.treePath, '%')
     WHERE p.organizationId = 10707

样本数据

【问题讨论】:

看起来你的 mysql 时区表是空的。您必须运行 mysql_tzinfo_to_sql 命令才能使 CONVERT_TZ() 正常工作。 哪里可以获得mysql_tzinfo_to_sql命令? 如果你有偏移量,你可以使用这个函数 DATE_ADD(displaytime, INTERVAL +-YOUR_OFFSET_IN_MINUTES MINUTE)。 DATE_SUB 不需要使用 IF/ELSE 语句,始终使用 DATE_ADD,sub 或 add 将根据 offcet 值应用,可以是正数或负数。 【参考方案1】:

SELECT CONVERT_TZ() 可以解决这个问题。但它不适合我。

为什么,你得到了什么错误?

SELECT CONVERT_TZ(displaytime,'GMT','MET');

如果您的列类型是时间戳或日期,则应该可以使用

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_convert-tz

测试其工作原理:

SELECT CONVERT_TZ(a_ad_display.displaytime,'+00:00','+04:00');

检查您的时区表

SELECT * FROM mysql.time_zone;
SELECT * FROM mysql.time_zone_name;

http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html

如果这些表为空,则说明您尚未初始化时区表。根据上面的链接,您可以使用mysql_tzinfo_to_sql 程序加载时区表。请试试这个

shell> mysql_tzinfo_to_sql /usr/share/zoneinfo

或者如果不工作阅读更多:http://dev.mysql.com/doc/refman/5.5/en/mysql-tzinfo-to-sql.html

【讨论】:

它给了我空值 SELECT CONVERT_TZ(a_ad_display.displaytime,'GMT','MET') as date_ from a_ad_display;我的专栏是 DATETIME 类型 你能发布什么 SHOW CREATE TABLE a_ad_display\G;将显示 这没有任何帮助。请给出您的表结构和示例数据。 在我的表结构中,这是我想要转换本地日期的一列,它的类型是 [DATETIME] ..请参阅我更新的示例数据问题 如果这是示例数据,那么您会得到空值,因为您的列值为空值。因此,我认为这是样本结果,而不是样本数据?无论如何,我编辑了我的答案。【参考方案2】:

在我的情况下,服务器上的时区不可用,这很好用:

SELECT CONVERT_TZ(`date_field`,'+00:00',@@global.time_zone) FROM `table`

注意:global.time_zone 使用服务器时区。您必须确保它具有所需的时区!

【讨论】:

UTC 时间戳增加了 10-15 秒。【参考方案3】:
 select convert_tz(now(),@@session.time_zone,'+05:30')

将“+05:30”替换为所需的时区。看这里 - https://***.com/a/3984412/2359994

格式化为所需的时间格式,例如:

 select DATE_FORMAT(convert_tz(now(),@@session.time_zone,'+05:30') ,'%b %d %Y %h:%i:%s %p') 

你会得到类似的结果 -> 2014 年 12 月 17 日上午 10:39:56

【讨论】:

在 MySQL 中将 UTC 格式的日期时间转换为 GMT+7

】在MySQL中将UTC格式的日期时间转换为GMT+7【英文标题】:ConvertdatetimeinUTCformattoGMT+7inMySQL【发布时间】:2019-03-1704:56:54【问题描述】:我在MySQL表中有一个Y-m-dH:i:sUTC格式的日期时间列:SELECT`transaction_time`FROM`transaction`LIMIT1;//2018-10-... 查看详情

Jooq java api,在选择查询中将日期时间转换为时区

】Jooqjavaapi,在选择查询中将日期时间转换为时区【英文标题】:Jooqjavaapi,convertdatetimetotimezoneinselectquery【发布时间】:2018-12-0407:36:38【问题描述】:遇到org.jooqapi的一些问题。将数据以UTC格式保存到DB中,用于timestamptz字段。从db... 查看详情

如何在 Presto 中将时间戳转换为日期?

】如何在Presto中将时间戳转换为日期?【英文标题】:HowtoconverttimestamptodateinPresto?【发布时间】:2018-04-0320:29:33【问题描述】:我喜欢将我的时间戳列转换为日期和时间格式。我应该如何从presto编写查询?我的时间戳是UTC时间。... 查看详情

如何在 MySQL 中将字符串转换为日期?

】如何在MySQL中将字符串转换为日期?【英文标题】:HowtoconvertastringtodateinMySQL?【发布时间】:2011-07-0906:04:21【问题描述】:我有一个string列,它充当date,我想选择它作为DATE。有可能吗?我的示例数据格式是:month/day/year->12/3... 查看详情

在 iOS 中将 UTC 日期时间转换为本地日期时间

】在iOS中将UTC日期时间转换为本地日期时间【英文标题】:ConvertingUTCdatetimetolocaldatetimeiniOS【发布时间】:2018-06-0604:39:55【问题描述】:我正在尝试将UTC日期时间转换为本地日期时间,下面是我的代码。funcdateTimeStatus(date:String)-&g... 查看详情

在 PHP 中将 UTC 日期转换为本地时间

】在PHP中将UTC日期转换为本地时间【英文标题】:ConvertUTCdatestolocaltimeinPHP【发布时间】:2022-01-0908:57:19【问题描述】:我将UTC日期存储到数据库中:$utc=gmdate("MdYh:i:sA");然后我想将保存的UTC日期转换为客户端的本地时间。我该怎... 查看详情

无法在 MySQL 查询中将字符串转换为日期时间

】无法在MySQL查询中将字符串转换为日期时间【英文标题】:UnabletoconvertstringtodatetimeinMySQLquery【发布时间】:2014-08-0806:52:34【问题描述】:我正在处理一个项目,其中有两个表-一个是tbllessontopic,它保存独特的课程计划,另一个... 查看详情

在 Swift 中将日期从 GMT+1 转换为 UTC 时的困惑

】在Swift中将日期从GMT+1转换为UTC时的困惑【英文标题】:ConfusionwhenconvertingdatefromGMT+1toUTCinSwift【发布时间】:2017-04-1903:38:37【问题描述】:当尝试将“2016-06-2312:00:00”转换为UTC日期时,我得到“2016-06-2310:00:00”第一个日期是GMT+1... 查看详情

在python中将日期时间从PDT转换为UTC

】在python中将日期时间从PDT转换为UTC【英文标题】:ConvertdatetimefromPDTtoUTCinpython【发布时间】:2021-09-2708:24:42【问题描述】:我有一个的对象。obj=datetime.datetime(2021,6,28,2,15,tzinfo=<FixedOffset\'-07:00\'>)时区是PDT(偏移量-7:00)。我... 查看详情

如何在 JPA 查询中将日期时间转换为日期

】如何在JPA查询中将日期时间转换为日期【英文标题】:HowtoconvertDatetimetoDateinJPAquery【发布时间】:2019-01-2310:55:06【问题描述】:我正在使用SpringdataJPA编写复杂的查询,比如说统计查询。@Data@AllArgsConstructor@NoArgsConstructorpublicclass... 查看详情

当我从 UTC 中获取值时,我可以在日期选择器处选择时间,那么如何将 UTC 时间转换为 GMT+05:30 到日期?

...从UTC中获取值时,我可以在日期选择器处选择时间,那么如何将UTC时间转换为GMT+05:30到日期?【英文标题】:icanselecttimeatdatepickerwhenigetvaluefromthatinUTCsohowtoconvertUTCtimetoGMT+05:30todate?【发布时间】:2018-09-2409:07:29【问题描述】:varti... 查看详情

在 Excel ODBC 连接中将 UTC 日期/时间戳转换为本地时区

】在ExcelODBC连接中将UTC日期/时间戳转换为本地时区【英文标题】:ConvertUTCdate/timestamptolocaltimezoneinaExcelODBCconnection【发布时间】:2014-07-1016:02:55【问题描述】:我有一个通过ODBC连接到Oracle数据库的Excel。我从数据库中获取了一个U... 查看详情

无法在javascript中将stringbst日期格式转换为utc

我有一个像BST格式的07-Oct-201911:02这样的字符串。我必须将相同的格式转换为UTC时间,即07-Oct-201910:02。我已经尝试了很多方法并试图找到一些内置函数,但是没有任何效果。我试图编写一个函数,该函数将字符串拆分,然后将其... 查看详情

如何在Javascript中将日期转换为其他时区[重复]

】如何在Javascript中将日期转换为其他时区[重复]【英文标题】:HowtoconvertDatetoOtherTimeZoneinJavascript[duplicate]【发布时间】:2014-10-1002:50:54【问题描述】:我正在尝试使用JavaScript将本地日期/时间转换为其他时区。日期以UTC格式存储... 查看详情

如何导入日期和转换时区?

】如何导入日期和转换时区?【英文标题】:Howtoimportdateandconverttimezone?【发布时间】:2021-03-0113:45:56【问题描述】:我有一个CSV文件,其日期字段位于UTC。我想在EST中将数据导入redshift。是否可以在COPY中指定时区,还是应该使... 查看详情

在 MySQL 查询中将字符串格式化为日期

...一个如下图的表格,日期列是一个字符串(MMMM-yyyy)。我想选择ID的最新行。对于ID#2,最新日期为2020年8月,价格为45.40IDDatePrice2August-202045.402July-202042.30我尝试了format(date 查看详情

如何在android中将日期转换为firebase时间戳格式

】如何在android中将日期转换为firebase时间戳格式【英文标题】:howtoconvertdatetofirebasetimestampformatinandroid【发布时间】:2021-11-0420:39:13【问题描述】:我的日期是-01-01-2021我需要的结果格式是-2021年1月1日下午3:37:59UTC+5:30(firebase时... 查看详情

如何在 C# 中将 dd/mm 转换为 Mysql 日期时间格式

】如何在C#中将dd/mm转换为Mysql日期时间格式【英文标题】:Howtoconvertdd/mmtoMysqlDatetimeformatinc#【发布时间】:2014-09-1803:08:35【问题描述】:我有一个dd/mm格式的日期字符串,例如06/03。现在我必须将此字符串以DATETIME格式存储到mysql... 查看详情