如何在MySQL中将UTC时间转换为EST或EDT时区时间
MySQL UTC时间转EST/EDT时间实现方案
前置准备
首先要确保MySQL已加载系统时区信息,否则时区转换函数无法识别UTC、America/New_York这类时区名称,加载方式如下:
- Linux系统执行命令:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql - Windows系统可从MySQL官网下载对应版本的时区表,导入到mysql库中即可。
转换逻辑说明
EST/EDT是北美东部时区的冬令时/夏令时标识,会随季节自动切换偏移量,不要使用固定的UTC-5偏移,否则夏令时时段会出现1小时误差,应该使用标准时区名America/New_York,MySQL会自动处理夏令时切换逻辑。
修改后的插入语句
你可以直接修改SELECT查询中的submission_date字段,用CONVERT_TZ函数完成转换即可:
INSERT INTO user (name,department,submission_date) SELECT name, department, CONVERT_TZ(submission_date, 'UTC', 'America/New_York') FROM user_details;
注意事项
- 如果你不需要适配夏令时,固定使用EST(UTC-5)时间,可以用固定偏移写法,不需要加载时区表也可运行:
CONVERT_TZ(submission_date, '+00:00', '-05:00') - 如果
user_details表的submission_date是DATE类型没有时间部分,转换时默认按UTC 00:00:00计算,转成东部时间可能会显示为前一天的日期,属于时区转换的正常结果,可先执行测试查询核对结果:SELECT submission_date AS utc_date, CONVERT_TZ(submission_date, 'UTC', 'America/New_York') AS est_edt_date FROM user_details LIMIT 10;
内容的提问来源于stack exchange,提问作者user15198141
相关产品推荐
相关产品推荐

