В SQL Server можете да използвате MONTH()
функция за преобразуване на името на месец в съответния номер.
Пример
Ето пример за преобразуване на името на месец в номер на месеца.
SELECT MONTH('September' + '1,1');
Резултат:
9
Това, което правя тук, е основно да измисля „дата“ (която включва посочения от мен месец), така че SQL Server да не извежда грешка при използване на MONTH()
функция без валидна дата.
Тази функция приема всеки израз, който може да бъде разрешен до време ,дата , smalldatetime , дата и час , дата и час2 , или datetimeoffset стойност. Може да бъде израз, израз на колона, дефинирана от потребител променлива или низов литерал.
Още „Подобен на дата“
Можете също така да предоставите по-подобен на дата аргумент, като направите нещо подобно:
SELECT MONTH('September' + ' 01, 1900');
Резултат:
9
Текущ ден и година
Или ако предпочитате да използвате текущия ден и година, можете да направите нещо подобно:
SELECT MONTH('September' + FORMAT(GETDATE(), 'd,y'));
Резултат:
9
Само за да е ясно обаче, освен ако посоченият месец не е същият като текущия, в крайна сметка ще получите дата, различна от текущата.
Ето един пример, за да илюстрирам какво имам предвид:
SELECT
FORMAT(GETDATE(), 'MMMM d, yyyy') AS [Today],
'September' + FORMAT(GETDATE(), ' d, yyyy') AS [Modified],
MONTH('September' + FORMAT(GETDATE(), ' d, yyyy')) AS [Month Number];
Резултат:
+----------------+--------------------+----------------+ | Today | Modified | Month Number | |----------------+--------------------+----------------| | March 22, 2020 | September 22, 2020 | 9 | +----------------+--------------------+----------------+
Изпълних тази заявка на 22 март 2020 г., но датата на промяна е 22 септември 2020 г.
Независимо от това, правилният номер на месеца се връща, когато използваме MONTH()
.