Je regarde un code VB6 hérité (années + ans, avant mon temps) qui exécute une requête contre un SQL 2005 db. Il fournit une restriction de date dans la clause WHERE
- où la date est donnée en tant que valeur entière à la suite d'un CLng()
à la date dans VB6.Conversion de INTEGER à DATETIME diffère de VB6
par exemple.
...
WHERE SomeDateField >= 40064
40064 est ce que VB6 convertit la date d'aujourd'hui (le 8 septembre) en faisant une CLng()
sur elle. Cependant, dans T-SQL cet entier convertit réellement le 10 septembre:
SELECT CAST(40064 AS DATETIME)
Et les résultats ne sont pas comme prévu. Quelqu'un sait ce qui peut causer cette différence de conversion entre VB et T-SQL?
Je suis assuré que cela a toujours fonctionné sans problème, et évidemment ma suggestion est de faire passer les dates en dates au format ISO standard. Mais, besoin d'essayer de trouver la raison derrière cette divergence qui commence à se produire.
Vous savez, SQL 2005 n'est pas que décennies;) –
je partirais avec votre suggestion de l'ISO dates ... –
@Moayad - :) Initialement couru contre SQL 2000, ce qui donne le même résultat comme 2005. – AdaTheDev