2010-01-25 6 views
0

en cours php 5.2.5 sur Windows Server 2003 (64 bits) et la connexion à SQL Server 2008mssql_query() champs vides pour les champs datetime

Les questions qui ont obtenir des champs datetime de SQL Server à l'aide mssql_query. Tout champ datetime que j'interroge ne renvoie rien. Tous les autres champs de la requête sont corrects, mais les champs datetime sont vides.

Nous sommes récemment passés de PEAR DB à mssql_ fonctions et ce fut la cause du problème. Le retour à PEAR n'est pas une option.

Je l'ai trouvé sur la page php.net mssql_query et cela fonctionne, mais j'ai des centaines de requêtes et j'espérais qu'il y avait une solution qui ne nous obligerait pas à mettre à jour chaque requête. Quelqu'un at-il une meilleure solution qui n'impliquerait pas de réécrire chaque requête?

"J'ai été bloqué par le fait que mssql_query() retourne des valeurs pour les colonnes 'datetime' dans un format inhabituel." "Pour retrouver vos valeurs dans l'habituel" AAAA-MM-JJ HH: MM: SS " format, vous pouvez utiliser la fonction CONVERT dans votre requête comme ceci:

SELECT CONVERT(varchar, INVOICE_DATE, 121) AS INVOICE_DATE ... 

où « INVOICE_DATE » est le nom de la colonne «datetime « .

Répondre

0

Terminé juste de faire un remplacement de chaîne pour contourner ce problème.

D'abord, j'ai créé un tableau de champs de date que je pouvais éventuellement sélectionner dans la base de données SQL Server avec laquelle je travaillais.

Nous avons une classe DB Abstraction dans laquelle nous exécutons chaque requête.

Dans la classe DB, je vérifie si "FROM" était dans la requête. Si je l'ai divisé la chaîne sur FROM pour obtenir les champs SELECT partie Ensuite, je fais un foreach sur le tableau de champs et si ce champ existe dans la chaîne, je remplace le champ par CONVERT (varchar, FIELD, 121) AS FIELD

Fonctionne très bien pour moi ... ne fonctionne pas avec SELECT * mais nous n'utilisons pas de requêtes SELECT * donc ce n'est pas un problème pour nous.

Questions connexes