8 ответов:
когда сомневаешься,быть явным о преобразовании типа данных с помощью CAST / CONVERT:
UPDATE TABLE SET EndDate = CAST('2009-05-25' AS DATETIME) WHERE Id = 1
Как правило, это должно работать.
но вы можете попробовать это? У меня нет SQL на моем домашнем компьютере, я не могу попробовать себя
UPDATE table SET EndDate = '2009-05-25 00:00:00.000' WHERE Id = 1
строковый литерал выгружается в соответствии с текущим параметром dateformat, см.
SET DATEFORMAT. Один формат, который всегда будет работать,- это "20090525".теперь, конечно, вам нужно определить "не работает". Никаких записей не обновляется? Возможно, что
Id=1не соответствует ни одна запись...если он говорит "одна запись изменена", то, возможно, вам нужно показать нам, как вы проверяете...
использование параметра DateTime является лучшим способом. Однако если вы все еще хотите передать DateTime в виде строки, то приведение не должно быть необходимым при условии, что используется языковой агностический формат.
например
учитывая таблицу, созданную как:
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 server) .
формат ISO 'YYYY-MM-DDThh:mm: ss' также является языковым агностиком и полезен, когда вам нужно пройти ненулевое время.
дополнительная информация:http://www.karaszi.com/SQLServer/info_datetime.asp
Это должно работать, я бы поставил скобки вокруг [дата], поскольку это зарезервированное ключевое слово.
Если вы не заинтересованы в указании времени, вы можете также использовать формат 'ДД/ММ/ГГГГ', однако я бы придерживался преобразование метод и его соответствующий формат ISO, так как вы действительно должны избегать использования значений по умолчанию.
вот пример:
SET startDate = CONVERT(datetime,'2015-03-11T23:59:59.000',126) WHERE custID = 'F24'
Comments