[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]全时区转换

原文地址:https://www.cnblogs.com/petewell/p/11526638.html

时间: 2024-10-07 15:08:50

[SQL SERVER][Memo]全时区转换的相关文章

SQL Server全时区转换

SQL Server全时区转换 假如你的应用程序是跨国(例如跨国银行交易)使用的话,那么数据库的一些国际化特性支持可以说是非常重要 其中最常见的就是各国时区上的差异,由于SQL Server getdate()读取的是本地机器所返回的值. 并不包含数据库时区位移,SQL Server2008新增了 datetimeoffset  数据类型(结合时区为基础的当日时间) 搭配SWITCHOFFSET 函数来更方便的处理时区转换问题 --时区转换 SELECT SYSDATETIMEOFFSET()

SQL Server监控全解析

SQL Server监控全解析 在SQL Server的日常管理中,让SQL Server高效运行,且性能良好,是DBA需要做的事.DBA需要了解数据库的日常运行情况,对性能进行分析和调优,需要对线上环境部署监控.那我们都需要监控哪些方面呢? SQL Server服务器的CPU.内存.IO.网络流量.缓存等资源性能怎么样,各个相关服务如SQL Server服务.SQL Server代理服务等是否正常运行,这些一般使用开源的监控软件Zabbix来设置告警,当然针对数据库服务器的特性,添加一些SQL

Sql Server函数全解<四>日期和时间函数

原文:Sql Server函数全解<四>日期和时间函数   日期和时间函数主要用来处理日期和时间值,本篇主要介绍各种日期和时间函数的功能和用法,一般的日期函数除了使用date类型的参数外,也可以使用datetime类型的参数,但会忽略这些值的时间部分.相同的,以time类型值为参数的函数,可以接受datetime类型的参数,但会忽略日期部分. 1.获取系统当前日期的函数getDate();  getDate()函数用于返回当前数据库系统的日期和时间,返回值的类型为datetime.[例]sel

SQL Server数据全同步及价值分析[终结版]

SQL Server数据全同步[终结版] 版权全部.转载请注明出处.谢谢! 经过两天的同步编写和測试.出了第一个Release版本号: 1. 本函数仅支持单向同步.即从一个主数据库想多个从数据库同步 2.主数据库的不论什么增删改都会同步到全部从数据库上 3. 最重要的一点:同步数据库的价值所在:当主数据库server不可用时,程序能够使用其它从数据库或者备用数据库,这对于未来公有云和私有云应用具有重大价值! 代码: <span style="font-size:18px;">

Sql Server函数全解&lt;五&gt;之系统函数

原文:Sql Server函数全解<五>之系统函数  系统信息包括当前使用的数据库名称,主机名,系统错误消息以及用户名称等内容.使用SQL SERVER中的系统函数可以在需要的时候获取这些信息.下面介绍系统函数的作用和使用方法. 1.返回表中指定字段的长度   COL_LENGTH(table,column)函数返回表中指定字段的长度值.其返回值为int类型,table为要确定其列长度信息的表的名称,是nvarchar类型的表达式.column为要确定其长度的列的名称,是nvarchar类型的

SQL Server on Ubuntu——Ubuntu上的SQL Server(全截图)

本文从零开始一步一步介绍如何在Ubuntu上搭建SQL Server 2017,包括安装系统.安装SQL等相关步骤和方法(仅供测试学习之用,基础篇). 一.   创建Ubuntu系统(Create Ubuntu System) 1.      前提准备 由于本文主要研究SQL Server 2017在Linux上的搭建方法,从Install SQL Server on Linux中得知当前SQL Server 2017 CTP 2.0对于Ubuntu系统支持16.04和16.10,同时可以直接下

Sql Server函数全解&lt;三&gt;数据类型转换函数和文本图像函数

一:数据类型转换函数 在同时处理不同数据类型的值时,SQL Server一般会自动进行隐士类型转换.对于数据类型相近的值是有效的,比如int和float,但是对于其它数据类型,例如整型和字符类型,隐士转换就无法实现了,此时必须使用显示转换.为了实现这种显示转换,T-SQL提供了两个显示转换函数,分别是CAST和CONVERT函数. CAST(x AS type)和CONVERT(type,x)函数将一个类型的值转换为另一个类型的值.eg: select CAST('121231' AS DATE

Sql Server 日期时间格式转换

日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-02-01 08:02 CONVERT(varchar(10), 时间一, 23) 结果:2007-02-01 语句及查询结果:Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSelect CONVERT(varchar(100), GETDATE(), 1): 05/16/06Select CONVERT(var

Sql Server中Float格式转换字符串varchar方法(转)

SELECT CONVERT(varchar(100), CAST(@testFloat AS decimal(38,2)))SELECT STR(@testFloat, 38, 2) 从Excel中导入到sql2000,有一列“联系方式”变成了float类型,我想转换成nvarchar类型,用下面的语句 select convert(nvarchar(30),convert(int,联系方式)) from employeego //数据溢出,不行! select convert(nvarcha