Utilizzo di SQL Server 2008, questa query grandi opere:Combinando (concatenare) data e ora in un datetime
select CAST(CollectionDate as DATE), CAST(CollectionTime as TIME)
from field
mi dà due colonne come questo:
2013-01-25 18:53:00.0000000
2013-01-25 18:53:00.0000000
2013-01-25 18:53:00.0000000
2013-01-25 18:53:00.0000000
.
.
.
che sto cercando di coniugare li in un unico datetime con il segno più, in questo modo:
select CAST(CollectionDate as DATE) + CAST(CollectionTime as TIME)
from field
ho guardato su una decina di siti web, tra cui risposte o n questo sito (come this one), e tutti sembrano concordare sul fatto che il segno più dovrebbe funzionare, ma ho l'errore:
Msg 8117, Level 16, State 1, Line 1
Operand data type date is invalid for add operator.
Tutti i campi sono non-zero e non nullo. Ho anche provato la funzione CONVERT e ho provato a trasmettere questi risultati come varchar, lo stesso problema. Questo non può essere così difficile come lo sto facendo.
Qualcuno può dirmi perché questo non funziona? Grazie per qualsiasi aiuto.
Quali sono i tipi di dati originali per ogni colonna ?, e se sono stringhe, come vengono i dati memorizzati lì? (AAAA-MM-GG, AAAAMMGG, ecc.) – Lamak
In realtà, domanda di follow-up a te e @ Aaron Bertrand, se sto CASTING (o CONVERTING) i miei dati nella query stessa, è importante se i dati sottostanti sono memorizzati come stringhe o date? Sto archiviando come campi datetime, ma solo curioso. – Stanton
@Stanton certo, importa. Perché passare attraverso due livelli di cast/convert quando potresti non averne bisogno? –