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.
sql
sql-server
tsql
types
Xaisoft
fuente
fuente
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
fuente
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
fuente
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 ...
fuente
SET DATEFORMAT
es realmente efectivo al escribir SQL para entornos con diferentes localizacionesUsar 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
fuente
UPDATE TABLE SET EndDate = CAST('2017-12-31' AS DATE) WHERE Id = '123'
fuente
Eso debería funcionar, pondría corchetes alrededor de [Fecha] ya que es una palabra clave reservada.
fuente
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'
fuente
¿Hay tal vez un gatillo en la mesa que lo hace retroceder?
fuente