La siguiente consulta no se actualiza el campo de fecha y hora:¿Cómo se actualiza un campo DateTime en T-SQL?
update table
SET EndDate = '2009-05-25'
WHERE Id = 1
También he probado con sin guiones, pero eso no funciona bien.
La siguiente consulta no se actualiza el campo de fecha y hora:¿Cómo se actualiza un campo DateTime en T-SQL?
update table
SET EndDate = '2009-05-25'
WHERE Id = 1
También he probado con sin guiones, pero eso no funciona bien.
En caso de duda, be explicit about the data type conversion using CAST/CONVERT:
UPDATE TABLE
SET EndDate = CAST('2009-05-25' AS DATETIME)
WHERE Id = 1
Normalmente, debería funcionar.
¿Pero puede intentar esto? No tengo SQL en mi PC de casa, no puedo probar a mí mismo
UPDATE table
SET EndDate = '2009-05-25 00:00:00.000'
WHERE Id = 1
Esto funcionó, pero lo intenté antes sin todos los ceros y no funcionó. ¿Por qué? – Xaisoft
Lo probé con '2009-05-25 00: 02: 01.000', pero no funcionó. – Xaisoft
Bien, en serio no tengo ni idea. Porque escribió sin información de tiempo, y SQL debe adjuntar 00: 00: 00.000 predeterminado de forma automática. Entonces debe ser trabajado. –
¿Hay tal vez un disparador en el establecimiento de nuevo la mesa?
Voy a verificarlo dos veces. – Xaisoft
Eso debería funcionar, pondría corchetes alrededor de [Fecha], ya que es una palabra clave reservada.
Su nombre es realmente EndDate – Xaisoft
El literal de cadena se pasa de acuerdo con la configuración del formato de fecha actual, consulte SET DATEFORMAT
. Un formato que siempre funcionará es el '20090525'.
Ahora, por supuesto, debe definir "no funciona". No hay registros se actualiza? Tal vez el Id=1
no coincide con ningún registro ...
Si dice 'Un registro cambió', entonces tal vez usted necesita para mostrarnos cómo se verifica ...
Id 1 existe. – Xaisoft
El formato de fecha es por qué estaba pensando que ser explícito sobre la conversión sería una buena idea ... –
Lo bueno Remus, 'SET DATEFORMAT' es realmente eficaz cuando se escribe SQL para entornos con diferentes localizaciones –
El uso de 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 use un formato de idioma diferente.
p. Ej.
dado una tabla creada como:
create table t1 (id int, EndDate DATETIME)
insert t1 (id, EndDate) values (1, GETDATE())
La siguiente debería funcionar siempre:
update t1 set EndDate = '20100525' where id = 1 -- YYYYMMDD is language agnostic
El siguiente trabajo:
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 'AAAA-MM-DD' no es un formato independiente del idioma (desde el punto de vista del servidor SQL).
El formato ISO 'YYYY-MM-DDThh: mm: ss' también es independiente del idioma, y útil cuando necesita pasar un tiempo distinto de cero.
Más información: http://www.karaszi.com/SQLServer/info_datetime.asp
Si no está interesado en la especificación de un tiempo, también se puede utilizar el formato 'DD/MM/AAAA', sin embargo que se pegaba a un métodoconversión, y su formato ISO relevante, ya que realmente debería evitar el uso de valores predeterminados.
He aquí un ejemplo:
SET startDate = CONVERT(datetime,'2015-03-11T23:59:59.000',126) WHERE custID = 'F24'
UPDATE TABLE
SET EndDate = CAST('2017-12-31' AS DATE)
WHERE Id = '123'
es fecha en que el nombre real de la columna? – Gratzy
no en realidad, es EndDate, pero acabo de acortarlo a Date. – Xaisoft
¿recibe un error o simplemente no hay resultados? – Gratzy