首页 > 数据库 >sql server 中 本地时间与UTC时间的转换

sql server 中 本地时间与UTC时间的转换

时间:2024-11-07 11:10:12浏览次数:3  
标签:UTC server 时间 本地 sql datetime DECLARE SELECT

在SQL Server中,可以使用 GETUTCDATE()函数获取当前的UTC时间,而SYSDATETIME()CURRENT_TIMESTAMP等函数获取的是本地时间。

如果需要将UTC时间转换为本地时间,可以使用DATEADD()函数上相应的小时数,这取决于本地时间与UTC时间之间的时差。

方法一:

以下是一个将UTC时间转换为本地时间的例子:

-- 假设UTC时间
DECLARE @UTCDateTime datetime = '2024-11-11 12:00:00';
-- 转换为本地时间
DECLARE @LocalDateTime datetime;
SET @LocalDateTime = DATEADD(hour, DATEDIFF(hour, GETUTCDATE(), GETDATE()), @UTCDateTime);
SELECT @LocalDateTime as LocalTime;

反之,如果需要将本地时间转换为UTC时间,可以使用相反的逻辑:

-- 假设本地时间
DECLARE @LocalDateTime datetime = '2024-11-11 12:00:00';
-- 转换为UTC时间
DECLARE @UTCTime datetime;
SET @UTCTime = DATEADD(hour, -DATEDIFF(hour, GETUTCDATE(), GETDATE()), @LocalDateTime);
SELECT @UTCTime as UTCTime;

方法二:

若放到sql中查询某一列 也可使用

  SELECT TOP 2 
    [LastUpdateOn] UTCTime,
   [InstallTimeToLocalTime] = CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, [LastUpdateOn]), DATENAME(TzOffset, SYSDATETIMEOFFSET())))
    FROM EMPLOYEE e

此处解释一下

语法
返回从存储的时区偏移量变为指定的新时区偏移量时得到的 datetimeoffset 值。

SWITCHOFFSET ( DATETIMEOFFSET, time_zone )
参数
DATETIMEOFFSET
是一个可以解析为 datetimeoffset(n) 值的表达式。

time_zone
是一个格式为 [+|-]TZH:TZM 的字符串,或是一个表示时区偏移量的带符号的整数(分钟数),假定它能够感知夏时制并作出相应的调整。

返回类型
具有 DATETIMEOFFSET 参数的小数精度的 datetimeoffset。

 

当然了 也可以 结合方法一二 新建一个Function, 后续直接调用此方法函数即可 (注意不同数据库账号之间是否需要授权)

CREATE OR ALTER FUNCTION dbo.CIM_F_Local_To_UTC (@idtDateTime DATETIME)
RETURNS DATETIME
AS
BEGIN
  DECLARE @Differance INT
  SET @Differance = (SELECT  DifferenceDays  FROM DateFiffView)
  SET @idtDateTime = DATEADD(mi, @Differance * 60, @idtDateTime);
  RETURN @idtDateTime
END

GO
----附创建的视图DateFiffView 
CREATE VIEW dbo.DateFiffView 
AS SELECT datediff(mi,getdate(),getutcdate())/60 as DifferenceDays
GO
---- 调用方式举例
  SELECT   DBO.CIM_F_Local_To_UTC(e.CreatedOn) 
    FROM EMPLOYEE e

 

 

 

 

 

 

标签:UTC,server,时间,本地,sql,datetime,DECLARE,SELECT
From: https://www.cnblogs.com/Vliana/p/18531793

相关文章

  • SQL Server执行较大的sql脚本时,会报没有足够的内存继续执行程序(mscorlib)的错误
    原文:https://blog.csdn.net/yao940622/article/details/79690953 问题描述:    在MicrosoftSQLServerManagementStudio 中执行较大的sql脚本时,会报没有足够的内存继续执行程序(mscorlib)的错误。如下图所示解决方法:使用sqlcmd导入执行第一步:win+r键入:cmd命令,开启命......
  • mysql 游标 示例
    提示:mysql游标必须要在在存储过程中才能使用,不能单独使用数据表CREATETABLE`student_score`(`id`intunsignedNOTNULLAUTO_INCREMENT,`student_id`varchar(128)DEFAULTNULL,`student_course_name`varchar(128)DEFAULTNULL,`score`intDEFAULTNULL,......
  • Java面试系列-MySQL面试题20道,InnoDB,索引类型,事务隔离级别,锁机制,MVCC,主从复制,慢查询,分
    文章目录1.MySQL中的InnoDB和MyISAM存储引擎有什么区别?2.MySQL中的索引类型有哪些?3.MySQL中的索引是如何工作的?4.MySQL中的事务隔离级别有哪些?5.MySQL中的锁机制有哪些?6.MySQL中的MVCC(多版本并发控制)是如何工作的?7.MySQL中的主从复制是如何工作的?8.MySQL中的分区......
  • mysql学习必备四大语法 增 删 改 查
    SQL(结构化查询语言)是用于管理关系型数据库的标准语言。增、删、改、查是对数据库表中数据进行基本操作的四种主要功能,通常称为CRUD(Create,Read,Update,Delete)。以下是这四个操作的详细讲解和示例1.增(Create)功能:简单来说插入数据库表中新记录SQL语法:表名:你想要插入数......
  • 高级SQL技巧:提升数据库性能与查询效率
    索引优化索引类型B树索引:B树索引适用于多种数据库操作,包括等值查询、范围查询和排序。B树索引通过将数据存储在一个平衡树结构中,允许快速的数据访问。B树索引的深度影响查询性能,因此,选择正确的索引列和维护索引的健康状况是至关重要的。例如,对于一个大型的电子商务数据库,对产......
  • SQL实战训练之,力扣:2020. 无流量的帐户数(递归)
    目录        一、力扣原题链接        二、题目描述        三、建表语句        四、题目分析                五、SQL解答        六、最终答案        七、验证        八、知识点一、......
  • SQL Server 2022 RTM Cumulative Update 15 发布下载 (累积更新包)
    SQLServer2022RTMCumulativeUpdate15发布下载(累积更新包)最新的累积更新(CU)下载,包含自SQLServer2022RTM发布以来的所有更新。请访问原文链接:https://sysin.org/blog/sql-server-2022/查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgSQLServer202......
  • selenium 使用 IEDriverServer 报安全策略不一致解决方式
    我的代码fromseleniumimportwebdriver#指定IEWebDriver的路径ie_driver_path='./IEDriverServer.exe'#初始化IEWebDriverie_driver=webdriver.Ie(executable_path=ie_driver_path)报错说保护模式不一致这是官方文档给的解释:在WindowsVista,Windows7或Win......
  • 服务器上mysqld,java的进程Out of Memory,被kernel kill 掉了
    /var/log/messages里面日志如下Aug1019:47:16VM-0-7-centoskernel:8936totalpagecachepagesAug1019:47:16VM-0-7-centoskernel:0pagesinswapcacheAug1019:47:16VM-0-7-centoskernel:Swapcachestats:add0,delete0,find0/0Aug1019:47:16VM-0......
  • 系统变量group_replication_group_seeds为空导致MySQL节点无法启动组复制
    MySQLInnoDBCluster集群中一个节点,在服务器重启过后,启动MySQL实例后,发现status为MISSING,另外memberState为OFFLINE状态。如下所示: MySQL  mysqldbu02:7306 ssl  JS > cluster.status(){    "clusterName": "yssps",     "defaultReplicaSet": {      ......