Je viens de regarder avec SQL Server et :
Code :
SELECT 2007 + '-' + '8' + '-' + 13
|
Produit la même merde que sous MySQL.
Vu l'ordre des fallback, c'est dans une certaine mesure logique... Juste que '-' = 0, franchement je vois pas où celui qui a inventé ça est allé le chercher...
A noter que ceci ne marche avec aucun autre symbole (genre, c'est juste pour faire chier). Pour tous les autres symboles, il se produit ce qui devrait se produit systématiquement : cast error.
Par contre, SQL Server, contrairement aux bouses que sont MySQL et PHP, travaille avec des variables typées.
Ainsi :
Code :
SELECT '2007' + '-' + '08' + '-' + '13'
|
donne le résultat escompté, à savoir '2007-08-13'.
Absolument normal, puisqu'il n'est à aucune moment nécessaire de changer de type puisque tous les éléments du "calcul" sont de type varchar.
Code :
declare @dte AS varchar(10) SELECT @dte = convert(varchar(10), getdate(), 103) SELECT convert(varchar(25), getdate(), 113) "getdate", @dte "format_103", convert(datetime, substring(@dte, 7, 4) + '-' + substring(@dte, 4, 2) + '-' + substring(@dte, 1, 2), 120) "reconverti"
|
getdate format_103 reconverti
------------------------- ---------- -----------------------
13 août 2007 12:21:07:383 13/08/2007 2007-08-13 00:00:00.000
(1 ligne(s) affectée(s)) |
Bref, la première requête (au 2,2 près) devrait marcher si MySQL n'était pas la bouse infecte qu'il est.
Message édité par MagicBuzz le 13-08-2007 à 12:25:13