Подтвердить что ты не робот

Как обновить поле DateTime в T-SQL?

Следующий запрос не обновляет поле datetime:

update table
SET EndDate = '2009-05-25'
WHERE Id = 1

Я также пробовал его без тире, но это тоже не работает.

4b9b3361

Ответ 2

Обычно он должен работать.

Но можете ли вы попробовать это? У меня нет SQL на моем домашнем ПК, я не могу попробовать себя.

UPDATE table
SET EndDate = '2009-05-25 00:00:00.000'
WHERE Id = 1

Ответ 3

Строковый литерал поэтапный в соответствии с текущей установкой dateformat, см. SET DATEFORMAT. Один формат, который всегда будет работать, - это "20090525".

Теперь, конечно, вам нужно определить, что "не работает". Никакие записи не обновляются? Возможно, Id=1 не соответствует записи...

Если он говорит "Одна запись изменена", возможно, вам нужно показать нам, как вы проверяете...

Ответ 4

Использование параметра DateTime - лучший способ. Однако, если вы все еще хотите передать DateTime в виде строки, то CAST не должен быть необходим при условии использования независимого от языка формата.

например

Учитывая таблицу, созданную как:

create table t1 (id int, EndDate DATETIME)
insert t1 (id, EndDate) values (1, GETDATE())

Следующее должно всегда работать:

update t1 set EndDate = '20100525' where id = 1 -- YYYYMMDD is language agnostic

Следующее будет работать:

SET LANGUAGE us_english
update t1 set EndDate = '2010-05-25' where id = 1

Тем не менее, это не будет:

SET LANGUAGE british
update t1 set EndDate = '2010-05-25' where id = 1  

Это связано с тем, что "ГГГГ-ММ-ДД" не является независимым от языка форматом (с точки зрения сервера SQL).

Формат ISO 'YYYY-MM-DDThh: mm: ss' также не зависит от языка и полезен, когда вам нужно передать ненулевое время.

Больше информации: http://karaszi.com/the-ultimate-guide-to-the-datetime-datatypes

Ответ 5

UPDATE TABLE
   SET EndDate = CAST('2017-12-31' AS DATE)
 WHERE Id = '123'

Ответ 6

Это должно сработать, я бы поставил скобки вокруг [Date] в качестве зарезервированного ключевого слова.

Ответ 7

Возможно, есть триггер в таблице, который он возвращает?

Ответ 8

Если вам не интересно указывать время, вы также можете использовать формат " DD/MM/YYYY", однако я бы придерживался метода Конверсия, и соответствующий формат ISO, поскольку вам действительно следует избегать использования значений по умолчанию.

Вот пример:  

SET startDate = CONVERT(datetime,'2015-03-11T23:59:59.000',126) WHERE custID = 'F24'

Ответ 9

ОБНОВЛЕНИЕ ТАБЛИЦЫ SET EndDate = CAST ('2009-05-25' КАК DATETIME) ГДЕ Id = 1

Это не работает в SQL Server.