9
votes

SQL CAST DATÉTIME

dans SQL Server 2005, pourquoi:

imprimé ('' comme dateTime)

Affichage:

Janvier 1 1900 12h00

J'aurais pensé que cela devrait être null ?


1 commentaires

ah .. Temps de voyage .. content que quelqu'un a trouvé ça


3 Réponses :


11
votes

C'est parce que la chaîne vide '' '' n'est pas null . Si vous faites: xxx

sortie: xxx

Cast and Convert (Transact-SQL)

lorsque des données de caractère qui représentent Seuls les composants de la date ou de la seule fois sont jeter à la DateTime ou smalldateTetime Types de données, le temps non spécifié Le composant est défini sur 00: 00: 00.000, et La composante Date non spécifiée est définie au 1900-01-01.


0 commentaires

6
votes

La chaîne vide est coulée sur 0 qui a ensuite été lancée à la date de l'époque.

contrairement à oracle , SQL Server distingue entre null et une chaîne vide.


0 commentaires

1
votes

de l'expérimentation, il ressemble à SQL Server tente de voter directement sur DateTime et d'échouer qui tente de lancer sur int , puis sur DateTime : xxx

sortie: xxx


1 commentaires

Ce test indique la cite BOL de ma réponse en action: Sélectionnez Cast ('1/1/2010' comme DateTime) Comme défaut de la valeur par défaut, Cast ('1: 23: 45.678' comme DateTime) en tant que démission Comme DateTime) comme défautDateTetime . Si le temps n'est pas donné, il n'est pas donné par défaut à 00: 00: 00.000 , si la date n'est pas donnée, il n'est pas défini par défaut à 1/1/1900