sql server - obtener - Convierta una cadena con el formato ''AAAAMMDDHHMMSS'' a fecha y hora
obtener hora sql server (1)
Reconozco que se han publicado muchas preguntas sobre la conversión de cadenas a datetime
y datetime
pero no he encontrado nada para convertir una cadena como 20120225143620
que incluye segundos.
Intentaba realizar una conversión limpia sin subcadenas de cada segmento y concatenando con /
y :
¿Alguien tiene alguna sugerencia?
Puede usar el método STUFF()
para insertar caracteres en su cadena para formatearla en un valor que SQL Server pueda comprender:
DECLARE @datestring NVARCHAR(20) = ''20120225143620''
-- desired format: ''20120225 14:36:20''
SET @datestring = STUFF(STUFF(STUFF(@datestring,13,0,'':''),11,0,'':''),9,0,'' '')
SELECT CONVERT(DATETIME, @datestring) AS FormattedDate
Salida:
FormattedDate
=======================
2012-02-25 14:36:20.000
Este enfoque funcionará si su cadena siempre tiene la misma longitud y formato, y funciona desde el final de la cadena hasta el inicio para producir un valor en este formato: YYYYMMDD HH:MM:SS
Para esto, no necesita separar la porción de fecha de todos modos, ya que SQL Server podrá entenderlo mientras está formateado.
Lectura relacionada:
La función STUFF inserta una cadena en otra cadena. Elimina una longitud especificada de caracteres en la primera cadena en la posición inicial y luego inserta la segunda cadena en la primera cadena en la posición de inicio.
STUFF (character_expression, start, length, replaceWith_expression)