J'utilise Perl DBD::ODBC pour me connecter à une base de données Oracle. Toutefois, un problème se pose lorsque j'essaie d'exécuter une requête select en utilisant une date dans la clause where. Il semble que ce problème se produit en raison du format de date de la base de données étant DD-MON-RR (voir DBD::ODBC::FAQ). Puisque je ne peux pas changer les paramètres de la base de données, quelqu'un peut-il suggérer une solution de contournement?Perl DBD :: ODBC Problèmes avec les formats de date Oracle
0
A
Répondre
4
La base de données par défaut date le format de date n'a d'importance que si vous en dépendez, ce qui n'est pas le cas en général. Vous pouvez:
1) Spécifiez le format de la date dans votre requête:
select *
from news
where news_date = to_date ('01-DEC-2009','DD-MON-RRRR');
2) Utilisez la norme ANSI pour la date littéraux:
select *
from news
where news_date = DATE '2009-12-01';
1
Ne vous fiez pas implicite datatype conversion. Vous pouvez toujours spécifier le format de date dans la clause où:
WHERE your_column = to_date(:your_parameter, 'yyyy/mm/dd')
2
Une option est d'utiliser la fonction (ou ANSI 'DATE' mot-clé) TO_DATE() pour convertir le format dans toutes les requêtes:
WHERE date_field > TO_DATE('2009-11-01', 'YYYY-MM-DD');
-- or
WHERE date_field > DATE '2009-11-01'
Si vous devez faire beaucoup, une meilleure option serait de définir le format de la session:
$dbh->do("ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'");
$dbh->do("ALTER SESSION SET NLS_TIMESTAMP_FORMAT='YYYY-MM-DD HH24:MI:SSxFF'");
$dbh->do("ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT='YYYY-MM-DD HH24:MI:SSxFF'");
Puis:
my $sth = $dbh->prepare(<<EOT);
SELECT date_field
FROM some_table
WHERE date_field > '2009-11-01'
EOT
Questions connexes
- 1. Problèmes Oracle avec DATE
- 2. Comment installer DBD :: Oracle dans Strawberry Perl
- 3. Comment interroger une vue à partir d'un serveur SQL avec Perl et DBD :: ODBC?
- 4. Equivalent Python de dbi/DBD :: Accès par proxy? (Perl DBI/DBD :: Proxy pour Python)
- 5. Formats de date Silverlight
- 6. Insertion de clobs dans Oracle avec ODBC
- 7. formats de date Validating dans les rails
- 8. MySQL entre les formats de date
- 9. Perl - Trop d'erreur de fichiers lors de l'utilisation de DBD Oracle
- 10. Formats de date en C#
- 11. Formats de date Analysis Services
- 12. Unix problème de pilote Oracle/Perl
- 13. conversion Datetime formats en utilisant Perl
- 14. DBD :: Oracle entraînant une corruption des appels système?
- 15. Quelle est la relation entre DBD :: Mysql et ODBC?
- 16. Quel module Perl peut gérer une variété de formats de date contenant des caractères Unicode?
- 17. DBD :: CSV: Problème avec les extensions de nom de fichier
- 18. Résultats de la fonction Oracle Decode avec différents formats
- 19. OverFlowException sur Oracle ODBC RowCount
- 20. Soustraction Oracle Date avec SQLLDR
- 21. Formats de date/heure pour différents pays
- 22. Formats de date lisibles par l'utilisateur
- 23. Formats d'entrée de date personnalisée PHP/Zend
- 24. WebFocus requête concernant sur les formats de date
- 25. SQL Server 2008: problèmes de connexion ODBC
- 26. DBD :: CSV: Problème avec les fonctions définis par l'utilisateur
- 27. Formats de date SQL Server - ddd
- 28. Comaring deux formats de date différents
- 29. Comment convertir des formats de date en Perl sans importer de modules externes?
- 30. Oracle OCI: requête avec champ Date