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 .