Серийный номер в SQL? - PullRequest
13 голосов
/ 28 июля 2010

Как преобразовать день [1-31] ​​и месяц [1-12] и год (все целые числа) в серийный номер даты в SQL (без преобразования в varchar)?

Ответы [ 2 ]

27 голосов
/ 28 июля 2010

Ноль - 01 января 1900 в SQL, так что вы можете использовать это:

DATEADD(day, @dayval-1,
     DATEADD(month, @monthval-1,
         DATEADD(year, @yearval-1900, 0)
     )
)

Редактировать, февраль 2018

Как говорит другой ответ, начиная с SQL Server 2012 (выпущенного после первоначального ответа) мы можем использовать DATEFROMPARTS

 SELECT DATEFROMPARTS (@yearval, @monthval, @dayval)
11 голосов
/ 08 февраля 2013

В SQL Server 2012 было добавлено несколько функций, которые позволят вам сделать это с DATEFROMPARTS , DATETIMEFROMPARTS и TIMEFROMPARTS среди прочих.

Пример:

SELECT DATEFROMPARTS(2018,2,1) -- returns 2018-02-01
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...