0
Year(int) Month(int) ProductName  Date(DateTime) 
    2013   11  ACB   
    2013   11  CDE 

Я пытаюсь обновить значения в приведенной выше таблице.Преобразование int в SQL Server

Этот запрос не работает.

Есть ли способ, который я могу преобразовать int в datetime?

UPDATE t 
SET t.[Date] = convert(date, convert(int, 
         t.[Year]) + '-' + convert(int, t.[Month]) + '-01') 
FROM Table t 

ответ

4

Вы пытаетесь добавить целые числа и строки. Это не Visual Basic 6.0; вам нужно быть более явным с вашими преобразованиями типов данных, особенно при попытке создания строк из числовых типов.

Конечно, есть более простые и более эффективные способы, чтобы сделать это, чем возиться с любым неуклюжим преобразованием в строки в любом случае:

UPDATE dbo.Table 
    SET [Date] = DATEADD(MONTH, [Month]-1, DATEADD(YEAR, [Year]-1900, 0)); 

В SQL Server 2012 (не знает, почему вы помечены 3 разных версий):

UPDATE dbo.Table 
    SET [Date] = DATEFROMPARTS([Year],[Month],1); 

Нет причин в любом случае использовать FROM ...

Смежные вопросы