Чтобы не зависеть от языка и языковых настроек, вы должны использовать формат 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)
Чистое решение datetime, не зависит от языка или DATEFORMAT, без строк
SELECT
DATEADD(year, [year]-1900, DATEADD(month, [month]-1, DATEADD(day, [day]-1, 0)))
FROM
dbo.Table
Вы можете преобразовать свои значения в 'Decimal' datetime и затем преобразовать их в столбец реального datetime:
select cast(rtrim(year *10000+ month *100+ day) as datetime) as Date from DateTable
См. здесь , а также дополнительную информацию.
]SELECT CAST(CAST(year AS varchar) + '/' + CAST(month AS varchar) + '/' + CAST(day as varchar) AS datetime) AS MyDateTime
FROM table