热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:[SQLSERVER][Memo]全时区转换

篇首语:本文由编程笔记#小编为大家整理,主要介绍了[SQL SERVER][Memo]全时区转换相关的知识,希望对你有一定的参考价值。 [SQL SERVER][Memo]全时区转换

篇首语:本文由编程笔记#小编为大家整理,主要介绍了[SQL SERVER][Memo]全时区转换相关的知识,希望对你有一定的参考价值。


[SQL SERVER][Memo]全时区转换





假设你的应用程序是跨国(如跨国银行事务)使用的话,


那么数据库一些国际化特性支持可说相当重要,


其中最常见的就是各国时区上的差异。


由于SQL Server getdate() 是撷取执行个体电脑所返回的值,


所以并不包含数据库时区位移,


但SQL2008后新增了 datetimeoffset? 数据类型(结合时区为基础的当日时间),


且可搭配 SWITCHOFFSET Function 来更方便处理时区转换需求,


下面自己笔记一下(个人认为在AP端处理应该可以更方便 TimeZoneInfo Class)。



--时区转换
SELECT SYSDATETIMEOFFSET() as "Taipei (GMT +8:00)",
SWITCHOFFSET(SYSDATETIMEOFFSET(), ‘+09:00‘) as "Janpen (GMT +9:00)",
SWITCHOFFSET(SYSDATETIMEOFFSET(), ‘-10:00‘) as "Hawaii (GMT -10:00)"



技术图片


如果使用SQL2005早期版本可参考 SQL 2005 Time Zone Conversion Functions



--取得Taipei时区位移
select DATEDIFF(MI, SYSDATETIMEOFFSET(),getdate()) as ‘TimeZoneOffset‘


技术图片


480 min /60 min=8 hr



--读取操作系统登录档取得GMT和DST名称
DECLARE @GMTname VARCHAR(100),@DSTname VARCHAR(100);
EXEC xp_regread "HKEY_LOCAL_MACHINE","SystemCurrentControlSetControlTimeZoneInformation","StandardName",@GMTname OUTPUT
EXEC xp_regread "HKEY_LOCAL_MACHINE","SystemCurrentControlSetControlTimeZoneInformation","DaylightName",@DSTname OUTPUT
SELECT @GMTname as ‘格林威治标准时间(GMT: Greenwich Mean Time )‘,@DSTname as ‘夏令时间(DST: Daylight Saving Time )‘



技术图片





参考


GETDATE (Transact-SQL)


datetimeoffset (Transact-SQL)


SWITCHOFFSET (Transact-SQL)


[SQL SERVER][TSQL]日期和时间函数


Using time zone data in SQL Server 2008


SQL 2005 Time Zone Conversion Functions


time zone conversion function (SQL 2008)


http://time.artjoey.com/


时区列表

原文:大专栏  [SQL SERVER][Memo]全时区转换



推荐阅读
author-avatar
zhaojiapin_313
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有