Combinant (concaténation) la date et l'heure dans un datetime

À l'aide de SQL Server 2008, cette requête fonctionne très bien:

select CAST(CollectionDate as DATE), CAST(CollectionTime as TIME)
from field

Me donne deux colonnes comme ceci:

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
    .
    .
    .

Je suis en train de les combiner en une seule datetime utilisant le signe plus, comme ceci:

select CAST(CollectionDate as DATE) + CAST(CollectionTime as TIME)
from field

J'ai regardé sur près d'une dizaine de sites web, y compris les réponses sur ce site (comme cette une), et ils semblent tous d'accord que le signe devrait fonctionner, mais j'obtiens l'erreur:

Msg 8117, Niveau 16, État 1, Ligne 1

Opérande type de données date n'est pas valide pour ajouter de l'opérateur.

Tous les champs sont non nulles et non nulles. J'ai aussi essayé la fonction de conversion et essayé de le jeter ces résultats comme varchars, même problème. Cela ne peut pas être aussi dur que je fais.

Quelqu'un peut-il me dire pourquoi cela ne fonctionne pas? Merci pour toute aide.

  • Quels sont les types de données d'origine pour chaque colonne?, et si ils sont des chaînes de caractères, comment les données qui y sont stockées? (AAAA-MM-JJ,AAAAMMJJ,etc)
  • En fait, la question de suivi à vous et @Aaron Bertrand, si je suis de CASTing (ou de CONVERSION) mes données dans la requête elle-même, importe-t-il si les données sous-jacentes sont stockés sous forme de chaînes ou de dates? Je suis le stockage comme les champs datetime, mais juste curieux.
  • bien sûr, il n'importe. Pourquoi aller au moyen de deux niveaux de cast/convertir où vous ne pourriez pas besoin?
  • Ils ont été datetimes?. Oui c'est important, on ne peut pas concaténer datetimes, c'est pourquoi j'ai d'abord demandé le type de données
  • Aussi, l'on a accepté la réponse suppose que le temps n'est pas de la partie sur CollectionDate (comme dans, est un rendez-vous avec 00:00:00). Si ce n'est pas le cas, alors il sera de retour de mauvais résultats. Et le casting d'abord, comme datetime est inutile
  • pas plus

InformationsquelleAutor Stanton | 2013-09-04