- SQL 教程
- SQL - 首页
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 数据库
- SQL - 语法
- SQL - 数据类型
- SQL - 运算符
- SQL - 表达式
- SQL 数据库
- SQL - 创建数据库
- SQL - 删除数据库
- SQL - 选择数据库
- SQL - 重命名数据库
- SQL - 显示数据库
- SQL - 备份数据库
- SQL 表
- SQL - 创建表
- SQL - 显示表
- SQL - 重命名表
- SQL - 截断表
- SQL - 克隆表
- SQL - 临时表
- SQL - 修改表
- SQL - 删除表
- SQL - 删除表数据
- SQL - 约束
- SQL 查询
- SQL - INSERT 查询
- SQL - SELECT 查询
- SQL - SELECT INTO
- SQL - INSERT INTO SELECT
- SQL - UPDATE 查询
- SQL - DELETE 查询
- SQL - 排序结果
- SQL 视图
- SQL - 创建视图
- SQL - 更新视图
- SQL - 删除视图
- SQL - 重命名视图
- SQL 运算符和子句
- SQL - WHERE 子句
- SQL - TOP 子句
- SQL - DISTINCT 子句
- SQL - ORDER BY 子句
- SQL - GROUP BY 子句
- SQL - HAVING 子句
- SQL - AND & OR
- SQL - 布尔 (BIT) 运算符
- SQL - LIKE 运算符
- SQL - IN 运算符
- SQL - ANY, ALL 运算符
- SQL - EXISTS 运算符
- SQL - CASE
- SQL - NOT 运算符
- SQL - 不等于
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 运算符
- SQL - UNION 运算符
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 运算符
- SQL - EXCEPT 运算符
- SQL - 别名
- SQL 连接
- SQL - 使用连接
- SQL - INNER JOIN
- SQL - LEFT JOIN
- SQL - RIGHT JOIN
- SQL - CROSS JOIN
- SQL - FULL JOIN
- SQL - 自连接
- SQL - DELETE JOIN
- SQL - UPDATE JOIN
- SQL - LEFT JOIN vs RIGHT JOIN
- SQL - UNION vs JOIN
- SQL 键
- SQL - UNIQUE KEY
- SQL - PRIMARY KEY
- SQL - FOREIGN KEY
- SQL - 组合键
- SQL - 候选键
- SQL 索引
- SQL - 索引
- SQL - 创建索引
- SQL - 删除索引
- SQL - 显示索引
- SQL - UNIQUE 索引
- SQL - 聚簇索引
- SQL - 非聚簇索引
- 高级 SQL
- SQL - 通配符
- SQL - 注释
- SQL - 注入
- SQL - 托管
- SQL - MIN & MAX
- SQL - NULL 函数
- SQL - CHECK 约束
- SQL - DEFAULT 约束
- SQL - 存储过程
- SQL - NULL 值
- SQL - 事务
- SQL - 子查询
- SQL - 处理重复数据
- SQL - 使用序列
- SQL - 自动递增
- SQL - 日期和时间
- SQL - 游标
- SQL - 公共表表达式
- SQL - GROUP BY vs ORDER BY
- SQL - IN vs EXISTS
- SQL - 数据库调优
- SQL 函数参考
- SQL - 日期函数
- SQL - 字符串函数
- SQL - 聚合函数
- SQL - 数值函数
- SQL - 文本和图像函数
- SQL - 统计函数
- SQL - 逻辑函数
- SQL - 游标函数
- SQL - JSON 函数
- SQL - 转换函数
- SQL - 数据类型函数
- SQL 有用资源
- SQL - 问答
- SQL - 快速指南
- SQL - 有用函数
- SQL - 有用资源
- SQL - 讨论
SQL - SWITCHOFFSET() 函数
SQL 的SWITCHOFFSET()函数可用于返回已从存储时区偏移量更改为给定新时区偏移量的datetimeoffset值。
与DATETIMEOFFSET相比,SWITCHOFFSET的功能有所不同。它根据两个输入(DATETIMEOFFSET值和目标时区偏移量)将源值的偏移量转换为目标值。UTC值对于输入和输出都是相同的;您只需要将输入值的偏移量从最初记录它们的源偏移量切换到所需的目标偏移量。
语法
以下是SQL SWITCHOFFSET()函数的语法:
SWITCHOFFSET( expression, time_zone )
参数
此函数接受两个参数,如下所述:
expression − 将解析为datetimeoffset值的表达式
time_zone − 时区偏移量或带符号整数。
示例
在以下示例中,我们尝试演示SWITCHOFFSET()函数:
SELECT SWITCHOFFSET( '2023-02-20', '+06:00' ) AS Result;
输出
执行上述查询时,将获得如下输出:
+------------------------------------+ | Result | +------------------------------------+ | 2023-02-20 06:00:00.0000000 +06:00 | +------------------------------------+
示例
这里,我们将使用SWITCHOFFSET()函数的负值:
SELECT SWITCHOFFSET( '2023-02-20', '-06:00' ) AS Result;
输出
查询执行后,将生成如下所示的输出:
+------------------------------------+ | Result | +------------------------------------+ | 2023-02-19 18:00:00.0000000 -06:00 | +------------------------------------+
示例
在以下示例中,我们将设置一个变量,使用DATETIMEOFFSET()为其分配日期,将SWITCHOFFSET()应用于该日期,并使用以下查询将其与原始日期进行比较:
DECLARE @DATE datetimeoffset = '2023-02-19 18:00:00.0000000 -06:00'; SELECT @DATE AS 'Original Date', SWITCHOFFSET( @DATE, '+05:30' ) AS '+05:30';
输出
执行上述查询后,将显示如下输出:
+------------------------------------+------------------------------------+ | Original Date | +05:30 | +------------------------------------+------------------------------------+ | 2023-02-19 18:00:00.0000000 -06:00 | 2023-02-20 05:30:00.0000000 +05:30 | +------------------------------------+------------------------------------+
示例
这里,我们使用的是DATETIMEOFFSET():
DECLARE @DATE AS DATETIMEOFFSET = '2023-02-20 04:10:00.0000000 +04:10', @TIMEZONE AS CHAR(6)= '-08:00'; SELECT SWITCHOFFSET(@DATE, @TIMEZONE) AS Result;
输出
查询执行后,将生成如下所示的输出:
+------------------------------------+ | Result | +------------------------------------+ | 2023-02-19 16:00:00.0000000 -08:00 | +------------------------------------+
示例
在以下查询中,我们将使用SYSDATETIMEOFFSET()函数生成当前日期/时间和偏移量:
SELECT SYSDATETIMEOFFSET() AS 'Current Date', SWITCHOFFSET( SYSDATETIMEOFFSET(), '+07:30' ) AS '+07:30';
输出
上述查询的输出如下所示:
+------------------------------------+------------------------------------+ | Current Date | +07:30 | +------------------------------------+------------------------------------+ | 2023-02-20 16:03:59.8684429 +05:30 | 2023-02-20 18:03:59.8684429 +07:30 | +------------------------------------+------------------------------------+
示例
考虑另一个示例,我们使用SYSDATETIMEOFFSET()函数生成运行SQL Server的系统的当前日期和时间。这里我们将添加负值:
SELECT SYSDATETIMEOFFSET() AS 'Current Date', SWITCHOFFSET( SYSDATETIMEOFFSET(), '-05:30' ) AS '-05:30';
输出
查询执行后,将生成如下所示的输出:
+------------------------------------+------------------------------------+ | Current Date | -05:30 | +------------------------------------+------------------------------------+ | 2023-02-20 16:09:15.0193356 +05:30 | 2023-02-20 05:09:15.0193356 -05:30 | +------------------------------------+------------------------------------+
示例
在以下示例中,我们将使用整数表示时区偏移量而不是字符串,并检查查询是否可以这样做:
SELECT SWITCHOFFSET( '2023-02-20', 250 ) AS Result;
输出
运行上述查询后,将生成如下所示的输出:
+------------------------------------+ | Result | +------------------------------------+ | 2023-02-20 04:10:00.0000000 +04:10 | +------------------------------------+
sql-date-functions.htm
广告