Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SWITCHOFFSET () Ví dụ trong SQL Server

Trong SQL Server, SWITCHOFFSET() có thể được sử dụng để trả về bộ datetimeoffs giá trị được thay đổi từ độ lệch múi giờ được lưu trữ thành độ lệch múi giờ mới được chỉ định.

Dưới đây là các ví dụ về cách hoạt động của chức năng này.

Cú pháp

Đầu tiên, đây là cách thực hiện cú pháp:

SWITCHOFFSET ( DATETIMEOFFSET, time_zone )

Ở đâu DATETIMEOFFSET là một biểu thức có thể được giải quyết thành datetimeoffset (n) giá trị và time_zone là một chuỗi ký tự có định dạng [+ | -] TZH:TZM hoặc một số nguyên có dấu (phút) đại diện cho độ lệch múi giờ và được giả định là nhận biết và điều chỉnh tiết kiệm ánh sáng ban ngày.

Kết quả được trả về dưới dạng bộ datetimeoffs với độ chính xác phân số của DATETIMEOFFSET đối số.

Ví dụ 1

Dưới đây là một ví dụ cơ bản về cách sử dụng:

SELECT SWITCHOFFSET( '2112-01-01', '+08:00' ) AS Result;

Kết quả:

Result
----------------------------------
2112-01-01 08:00:00.0000000 +08:00

Ví dụ 2

Ví dụ này sử dụng giá trị âm:

SELECT SWITCHOFFSET( '2112-01-01', '-08:00' ) AS Result;

Kết quả:

Result
----------------------------------
2111-12-31 16:00:00.0000000 -08:00

Ví dụ 4

Trong ví dụ này, chúng tôi khai báo một biến và chỉ định ngày cho nó bằng cách sử dụng datetimeoffset loại dữ liệu. Sau đó, chúng tôi áp dụng SWITCHOFFSET() đến ngày đó và so sánh với ngày ban đầu.

DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00';
SELECT 
    @date AS 'Original Date',
    SWITCHOFFSET( @date, '+08:00' ) AS '+08:00';

Kết quả:

Original Date                      +08:00
---------------------------------- ----------------------------------
2112-01-01 00:00:00.0000000 +04:00 2112-01-01 04:00:00.0000000 +08:00

Ví dụ 5

Ở đây chúng ta làm tương tự như ví dụ trước, nhưng chúng ta sử dụng SYSDATETIMEOFFSET() chức năng tạo ngày / giờ hiện tại và bù đắp.

SELECT 
    SYSDATETIMEOFFSET() AS 'Current Date',
    SWITCHOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';

Kết quả:

Current Date                       +08:00
---------------------------------- ----------------------------------
2018-06-05 17:05:36.9415309 +10:00 2018-06-05 15:05:36.9415309 +08:00

Ví dụ 6

Ví dụ này giống với ví dụ trước, ngoại trừ chúng tôi thêm một giá trị âm.

SELECT 
    SYSDATETIMEOFFSET() AS 'Current Date',
    SWITCHOFFSET( SYSDATETIMEOFFSET(), '-08:00' ) AS '-08:00';

Kết quả:

Current Date                       -08:00
---------------------------------- ----------------------------------
2018-06-05 17:12:07.1122856 +10:00 2018-06-04 23:12:07.1122856 -08:00

Ví dụ 7

Bạn cũng có thể cung cấp độ lệch múi giờ dưới dạng số nguyên thay vì chuỗi:

SELECT SWITCHOFFSET( '2112-01-01', -180 ) AS Result;

Kết quả:

Result
----------------------------------
2111-12-31 21:00:00.0000000 -03:00

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Batch Mode Bitmaps trong SQL Server

  2. GETUTCDATE () có trả về cùng một giá trị nếu được sử dụng hai lần trong cùng một câu lệnh không?

  3. Hiệu suất máy chủ SQL TOP truy vấn CPU -1

  4. Ảnh chụp nhanh cơ sở dữ liệu SQL Server -1

  5. Tại sao máy chủ SQL gặp lỗi này:Không thể chèn giá trị NULL vào cột 'id'?