Conversión del campo de fecha varchar al tipo de datos de fecha y hora [duplicado]
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
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.
-- 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:
- Agregue una nueva columna a su tabla para DateTime
- Ejecute una actualización en su tabla usando Convertir anterior para actualizar la nueva columna con el valor convertido de su campo varchar.
- 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