La siguiente consulta no actualiza el campo de fecha y hora:
update table
SET EndDate = '2009-05-25'
WHERE Id = 1
También lo probé sin guiones, pero tampoco funciona.
La siguiente consulta no actualiza el campo de fecha y hora:
update table
SET EndDate = '2009-05-25'
WHERE Id = 1
También lo probé sin guiones, pero tampoco funciona.
EndDate
columna?
Respuestas:
En caso de duda, sea explícito sobre la conversión del tipo de datos utilizando CAST / CONVERT :
UPDATE TABLE
SET EndDate = CAST('2009-05-25' AS DATETIME)
WHERE Id = 1
Normalmente, debería funcionar.
¿Pero puedes probar esto? No tengo SQL en la PC de mi casa, no puedo intentarlo yo mismo
UPDATE table
SET EndDate = '2009-05-25 00:00:00.000'
WHERE Id = 1
La cadena literal se pega de acuerdo con la configuración de formato de fecha actual, consulte SET DATEFORMAT
. Un formato que siempre funcionará es el '20090525'.
Ahora, por supuesto, debe definir "no funciona". ¿No se actualizan los registros? Quizás Id=1
no coincida con ningún récord ...
Si dice 'Un registro cambiado', entonces tal vez necesite mostrarnos cómo verifica ...
SET DATEFORMAT
es realmente efectivo al escribir SQL para entornos con diferentes localizaciones
Usar un parámetro DateTime es la mejor manera. Sin embargo, si aún desea pasar un DateTime como una cadena, entonces el CAST no debería ser necesario siempre que se utilice un formato independiente del idioma.
p.ej
Dada una tabla creada como:
create table t1 (id int, EndDate DATETIME)
insert t1 (id, EndDate) values (1, GETDATE())
Lo siguiente siempre debería funcionar:
update t1 set EndDate = '20100525' where id = 1 -- YYYYMMDD is language agnostic
Lo siguiente funcionará:
SET LANGUAGE us_english
update t1 set EndDate = '2010-05-25' where id = 1
Sin embargo, esto no:
SET LANGUAGE british
update t1 set EndDate = '2010-05-25' where id = 1
Esto se debe a que 'YYYY-MM-DD' no es un formato independiente del idioma (desde el punto de vista del servidor SQL).
El formato ISO 'AAAA-MM-DDThh: mm: ss' también es independiente del idioma y es útil cuando necesita pasar un tiempo distinto de cero.
Más información: http://karaszi.com/the-ultimate-guide-to-the-datetime-datatypes
UPDATE TABLE
SET EndDate = CAST('2017-12-31' AS DATE)
WHERE Id = '123'
Si no está interesado en especificar una hora, también puede usar el formato ' DD / MM / YYYY ', sin embargo, me quedaría con un método de conversión y su formato ISO relevante, ya que realmente debería evitar usar valores predeterminados.
He aquí un ejemplo:
SET startDate = CONVERT(datetime,'2015-03-11T23:59:59.000',126)
WHERE custID = 'F24'