sql >> Databáze >  >> RDS >> Sqlserver

Vrácení čísla týdne ISO z data v SQL Server (T-SQL)

Pokud potřebujete extrahovat číslo týdne ISO z data na serveru SQL Server, můžete použít iso_week argument při volání DATEPART() funkce. Alternativně můžete použít isowk nebo isoww argumenty pro totéž.

Termínem „týden ISO“ mám na mysli normu data a času ISO 8601.

Týdny ISO začínají v pondělí a první týden v roce obsahuje 4. leden daného roku. Proto je možné, že data na začátku ledna budou součástí 52. nebo 53. týdne předchozího roku a data na konci prosince budou součástí prvního týdne příštího roku.

To znamená, že když z data extrahujete číslo týdne, můžete získat různé výsledky v závislosti na tom, zda používáte gregoriánský kalendář nebo normu data a času ISO 8601.

Příklad

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

Výsledek:

53

V tomto případě je datum 1. leden 2021, ale podle ISO je to 53. týden roku 2020.

Srovnání s gregoriánským

Zde je další příklad pro srovnání s gregoriánským týdnem.

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

Výsledek:

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

Vidíme tedy, že stejné datum může mít jiné číslo týdne v závislosti na tom, zda používáme gregoriánský kalendář nebo normu ISO.

Totéž můžeme udělat s datem blízko konce předchozího roku.

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

Výsledek:

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

Alternativní argumenty

Jak bylo zmíněno, lze alternativně použít isowk nebo isoww vrátíte číslo týdne 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;

Výsledek:

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

  1. Jak COS() funguje v MariaDB

  2. Jak dotazovat název databáze v Oracle SQL Developer?

  3. .NET 4:Jak nakonfigurovat soubor EDMX v jiném sestavení ve Web.Config

  4. Vložit/aktualizovat pomocnou funkci pomocí PDO