栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

服务器时区偏移值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

服务器时区偏移值

对于时区,您可以:

SHOW timezone;

或等效的:

SELECt current_setting('TIMEZONE');

但是这可以在服务器接受任何格式,所以它可能会返回

UTC
08:00
Australia/Victoria
,或类似的。

令人沮丧的是,似乎没有内置功能可以报告客户使用的以小时和分钟为单位的UTC时间偏移,这对我来说似乎很疯狂。您可以通过将UTC的当前时间与本地的当前时间进行比较来获得偏移量:

SELECT age(current_timestamp AT TIME ZONE 'UTC', current_timestamp)`

…但是IMO可以更方便地从秒中提取tz偏移量

current_timestamp
并将其转换为时间间隔:

SELECT to_char(extract(timezone from current_timestamp) * INTERVAL '1' second, 'FMHH24:MM');

除了不会产生前导零外,这将与所需结果相匹配,

-05:00
只是
-5:00
。烦人的是,似乎不可能在
to_char
数小时内产生前导零,这使我无法使用以下丑陋的手动格式设置:

CREATE OR REPLACe FUNCTION oracle_style_tz() RETURNS text AS $$SELECT to_char(extract(timezone_hour FROM current_timestamp),'FM00')||':'||       to_char(extract(timezone_minute FROM current_timestamp),'FM00');$$ LANGUAGE 'SQL' STABLE;

归功于Glenn,

timezone_hour
timezone_minute
不是我以前使用过
extract(timezone fromcurrent_timestamp) * INTERVAL '1' second)
的CTE和骇客。

如果不需要前导零,则可以使用:

CREATE OR REPLACe FUNCTION oracle_style_tz() RETURNS text AS $$SELECT to_char(extract(timezone from current_timestamp) * INTERVAL '1' second, 'FMHH24:MM');$$ LANGUAGE 'SQL' STABLE;


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/456074.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号