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

Převést název měsíce na číslo měsíce v SQL Server (T-SQL)

V SQL Server můžete použít MONTH() funkce pro převod názvu měsíce na odpovídající číslo.

Příklad

Zde je příklad převodu názvu měsíce na číslo měsíce.

SELECT MONTH('September' + '1,1');

Výsledek:

9

To, co zde dělám, je v podstatě výroba „datu“ (který zahrnuje můj zadaný měsíc), aby SQL Server nevyvolal chybu při použití MONTH() funkce bez platného data.

Tato funkce přijímá jakýkoli výraz, který lze přeložit na čas , datum , smalldatetime , datum a čas , datetime2 nebo datetimeoffset hodnota. Může to být výraz, sloupcový výraz, uživatelem definovaná proměnná nebo řetězcový literál.

Více „Datum-Like“

Dalo by se také poskytnout argument „jako datum“ tím, že uděláte něco takového:

SELECT MONTH('September' + ' 01, 1900');

Výsledek:

9

Aktuální den a rok

Nebo pokud dáváte přednost použití aktuálního dne a roku, můžete udělat něco takového:

SELECT MONTH('September' + FORMAT(GETDATE(), 'd,y'));

Výsledek:

9

Jen pro upřesnění, pokud není zadaný měsíc stejný jako aktuální měsíc, skončíte s jiným datem, než je aktuální datum.

Zde je příklad pro ilustraci toho, co mám na mysli:

SELECT 
  FORMAT(GETDATE(), 'MMMM d, yyyy') AS [Today],
  'September' + FORMAT(GETDATE(), ' d, yyyy') AS [Modified],
  MONTH('September' + FORMAT(GETDATE(), ' d, yyyy')) AS [Month Number];

Výsledek:

 +----------------+--------------------+----------------+
 | Today          | Modified           | Month Number   |
 |----------------+--------------------+----------------|
 | March 22, 2020 | September 22, 2020 | 9              |
 +----------------+--------------------+----------------+ 

Tento dotaz jsem provedl 22. března 2020, ale upravené datum je 22. září 2020.

Bez ohledu na to je při použití MONTH() vráceno správné číslo měsíce .


  1. COUNT(*) z více tabulek v MySQL

  2. Základní příkazy pro správu databáze MySQL – část I

  3. Vrátí sadu záznamů (virtuální tabulku) z funkce

  4. Vložit text s jednoduchými uvozovkami v PostgreSQL