MySQL转Oracle:如何改写时区转换查询为Oracle语法?
等效的Oracle时区转换查询
我来帮你把这条MySQL查询转换成Oracle语法——Oracle没有直接对应convert_tz()的函数,但我们可以用FROM_TZ()和AT TIME ZONE组合实现完全相同的效果:
SELECT FROM_TZ(CAST(datetime AS TIMESTAMP), 'UTC') AT TIME ZONE 'America/Los_Angeles' AS datetime1 FROM XYZ;
细节说明:
- 假设你的
datetime字段是DATE类型:先用CAST把它转成TIMESTAMP,再用FROM_TZ标记为UTC时区的时间戳 - 要是
datetime本身就是TIMESTAMP类型,可以去掉CAST,简化成:SELECT FROM_TZ(datetime, 'UTC') AT TIME ZONE 'America/Los_Angeles' AS datetime1 FROM XYZ; - Oracle支持的时区名称和MySQL基本兼容,比如
America/Los_Angeles是可以直接用的,比缩写(如PST/PDT)更准确,因为它会自动处理夏令时切换。
内容的提问来源于stack exchange,提问作者Prashant Chauhan




