Conversión del campo de fecha varchar al tipo de datos de fecha y hora [duplicado]

Dec 16 2020

Cometí el error de usar varchar para almacenar mis datos que representan fecha / hora. Ahora estoy tratando de convertir mi columna de datos de texto, almacenados como varchar, así:

2020-11-25T14:22:41.3539327Z

En una columna que almacena un tipo de datos de fecha y hora.

Respuestas

1 Larnu Dec 16 2020 at 02:49

Siempre que todos sus datos estén en el formato yyyy-MM-ddThh:mm:ss.nnnnnnn, puede cambiar el tipo de datos de la columna:

ALTER TABLE dbo.YourTABLE ALTER COLUMN YourColumn datetime2(7);

Si necesita la zona horaria allí, utilice datetimeoffset(7)en su lugar.

Brad Dec 16 2020 at 02:33
-- to fix it you can use convert, below uses GetDate for examaple
SELECT convert(varchar, getdate(), 120)

Dependiendo de la precisión que necesite, puede usar el enlace a continuación para encontrarlo y cambiar el 120 al número que necesite para esa precisión.

https://www.mssqltips.com/sqlservertip/1145/date-and-time-conversions-using-sql-server/

Para arreglar tu mesa debes seguir estos pasos:

  1. Agregue una nueva columna a su tabla para DateTime
  2. Ejecute una actualización en su tabla usando Convertir anterior para actualizar la nueva columna con el valor convertido de su campo varchar.
  3. Luego suelte la columna con los datos varchar.

Código para realizar los pasos que describí anteriormente

ALTER TABLE dbo.TableName ADD NewDateTimeCOL DATETIME

-- NOTE if your table is LARGE you will not want to do a direct update like this but do looping for performace purposes
UPDATE dbo.TableName
SET NewDateTimeCOL = convert(varchar, OldDateTimeCOL, 120)


ALTER TABLE dbo.TableName DROP COLUMN OldDateTimeCOL