Cómo convertir valores CHAR en valores DATETIME en SQL Server


Resumen


La siguiente información analiza cómo convertir los valores de tipo CHAR en valores DATETIME para que se pueda restar un valor SMALLINT y se pueda obtener un valor START_TIME.

Más información


Para empezar, la fecha y la hora del carácter deben convertirse al formato DateTime de SQL Server. A continuación, se puede restar el valor SMALLINT para obtener START_TIME. Ambas tareas se pueden realizar en una única expresión SQL; sin embargo, es más fácil comprender el proceso si ambas tareas se consideran por separado. Por ejemplo, si el valor de hora se almacena en una columna denominada "term_time" con un formato HHMMSS y el valor de fecha se almacena en una columna denominada "term_date" con un formato de AAMMDD, estos valores se pueden convertir a DateTime de SQL Server con la siguiente llamada:
   convert(datetime,term_date+" "+          substring(term_time,1,2)+":"+          substring(term_time,3,2)+":"+          substring(term_time,5,2)   )
Dada una fecha en formato DateTime de SQL Server, es fácil sumar o restar una cantidad determinada de segundos, minutos, días, etc. Por ejemplo, si el valor SMALLINT ("@delta") se encuentra en segundos, la siguiente función devolverá la fecha y la hora de Inicio:
   dateadd(ss,-(@delta),???)
Toda la expresión se puede colocar en la siguiente instrucción SELECT para que se ejecute en cada fila de la tabla de entrada. se supone que el "@delta" es un parámetro de entrada. Si "@delta" está en unidades distintas de los segundos, el primer parámetro de DateAdd debe cambiarse para reflejar las unidades correctas (minutos, días, etc.).
   select  dateadd( ss, -(@delta), convert(datetime,term_date+" "+               substring(term_time,1,2)+":"+               substring(term_time,3,2)+":"+               substring(term_time,5,2)   ))     from t1