SQL Server: преобразуйте ((международный) год, (международный) месяц, (международный) день) к Дате и времени [дубликат]

41
задан Community 23 May 2017 в 11:47
поделиться

4 ответа

Чтобы не зависеть от языка и языковых настроек, вы должны использовать формат ISO 8601 ГГГГММДД - он будет работать в любой системе SQL Server с любым языком и региональным действующая настройка:

SELECT
   CAST(
      CAST(year AS VARCHAR(4)) +
      RIGHT('0' + CAST(month AS VARCHAR(2)), 2) +
      RIGHT('0' + CAST(day AS VARCHAR(2)), 2) 
   AS DATETIME)
69
ответ дан 27 November 2019 в 00:15
поделиться

Чистое решение datetime, не зависит от языка или DATEFORMAT, без строк

SELECT
    DATEADD(year, [year]-1900, DATEADD(month, [month]-1, DATEADD(day, [day]-1, 0)))
FROM
    dbo.Table
37
ответ дан 27 November 2019 в 00:15
поделиться

Вы можете преобразовать свои значения в 'Decimal' datetime и затем преобразовать их в столбец реального datetime:

select cast(rtrim(year *10000+ month *100+ day) as datetime) as Date from DateTable

См. здесь , а также дополнительную информацию.

]
8
ответ дан 27 November 2019 в 00:15
поделиться
SELECT CAST(CAST(year AS varchar) + '/' + CAST(month AS varchar) + '/' + CAST(day as varchar) AS datetime) AS MyDateTime
FROM table
2
ответ дан 27 November 2019 в 00:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: