Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kembalikan Nomor Minggu ISO dari Tanggal di SQL Server (T-SQL)

Jika Anda perlu mengekstrak nomor minggu ISO dari tanggal di SQL Server, Anda dapat menggunakan iso_week argumen saat memanggil DATEPART() fungsi. Sebagai alternatif, Anda dapat menggunakan isowk atau isoww argumen untuk melakukan hal yang sama.

Dengan “ISO week”, saya mengacu pada standar tanggal dan waktu ISO 8601.

Minggu ISO dimulai pada hari Senin dan minggu pertama dalam setahun berisi 4 Januari tahun itu. Oleh karena itu, tanggal awal Januari mungkin menjadi bagian dari minggu ke-52 atau ke-53 tahun sebelumnya, dan tanggal akhir Desember menjadi bagian dari minggu pertama tahun berikutnya.

Ini berarti bahwa ketika Anda mengekstrak nomor minggu dari suatu tanggal, Anda bisa mendapatkan hasil yang berbeda tergantung pada apakah Anda menggunakan kalender Gregorian atau standar tanggal dan waktu ISO 8601.

Contoh

DECLARE @date date = '2021-01-01';
SELECT DATEPART(iso_week, @date);

Hasil:

53

Dalam hal ini, tanggalnya adalah 1 Januari 2021, tetapi dalam istilah ISO, ini adalah minggu ke-53 tahun 2020.

Perbandingan dengan Gregorian

Berikut contoh lain untuk membandingkannya dengan minggu Gregorian.

DECLARE @date date = '2021-01-01';
SELECT 
  DATEPART(week, @date) AS week,
  DATEPART(iso_week, @date) AS iso_week;

Hasil:

+--------+------------+
 | week   | iso_week   |
 |--------+------------|
 | 1      | 53         |
 +--------+------------+ 

Jadi kita dapat melihat bahwa tanggal yang sama dapat memiliki nomor minggu yang berbeda tergantung pada apakah kita menggunakan kalender Gregorian atau standar ISO.

Kita bisa melakukan hal yang sama dengan tanggal menjelang akhir tahun sebelumnya.

DECLARE @date date = '2020-12-27';
SELECT 
  DATEPART(week, @date) AS week,
  DATEPART(iso_week, @date) AS iso_week;

Hasil:

+--------+------------+
 | week   | iso_week   |
 |--------+------------|
 | 53     | 52         |
 +--------+------------+ 

Argumen Alternatif

Seperti disebutkan, sebagai alternatif dapat menggunakan isowk atau isoww untuk mengembalikan nomor minggu ISO.

DECLARE @date date = '2021-01-01';
SELECT 
    DATEPART(iso_week, @date) AS iso_week,
    DATEPART(isowk, @date) AS isowk,
    DATEPART(isoww, @date) AS isoww;

Hasil:

+------------+---------+---------+
 | iso_week   | isowk   | isoww   |
 |------------+---------+---------|
 | 53         | 53      | 53      |
 +------------+---------+---------+ 

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TAMPILKAN DATABASES Setara di SQL Server – sp_databases

  2. T-SQL - Aliasing menggunakan =versus as

  3. Cara membuat Batasan Unik pada Beberapa Kolom di SQL Server - Tutorial SQL Server / TSQL Bagian 96

  4. Pernyataan CASE WHEN untuk klausa ORDER BY

  5. SQL Server - Cara mengunci tabel hingga prosedur tersimpan selesai