Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Combinando (concatenando) data e hora em um datetime


Supondo que os tipos de dados subjacentes sejam tipos de data/hora/datahora:
SELECT CONVERT(DATETIME, CONVERT(CHAR(8), CollectionDate, 112) 
  + ' ' + CONVERT(CHAR(8), CollectionTime, 108))
  FROM dbo.whatever;

Isso converterá CollectionDate e CollectionTime para char sequências, combine-as e converta-as em um datetime .

Os parâmetros para CONVERT são data_type , expression e o style opcional (consulte sintaxe documentação ).

O data e hora style valor 112 converte para um ISO yyyymmdd formato. O style valor 108 converte para hh:mi:ss formato. Evidentemente, ambos têm 8 caracteres e é por isso que o data_type é CHAR(8) para ambos.

A sequência de caracteres combinada resultante está no formato yyyymmdd hh:mi:ss e, em seguida, convertido para um datetime .