Comparaison des dates DB2
J'ai une base de données DB2 champ de type DATE dans une table DB2.
Je veux sélectionner les données grâce à un filtre de date. Par exemple:
SELECT *
FROM table
WHERE registrationdate > '2002-10-01';
De la requête ci-dessus, j'obtiens des enregistrements avec registrationdate de "1943-10-01', mais c'est incorrect.
Ces ne marche pas non plus:
registrationdate > date('2002-10-01')
date(registrationdate) > date('2002-10-01')
date(registrationdate) > '2002-10-01'
Comment ai-je besoin de comparer des dates?
source d'informationauteur yons88 | 2012-05-28
Vous devez vous connecter pour publier un commentaire.
La norme SQL format pour une DATE littérale est:
À tout le moins, il vaut la peine d'essayer:
J'ai exploré d'autres problèmes avec la base de données, après un redémarrage, il a commencé à travailler, de sorte que cela fonctionne correctement maintenant:
Le format par défaut utilisé pour les dates est déterminé par le code de territoire de la DB2 base de données (qui peut être spécifié lors de la création de la base de temps). Par exemple, ma base de données a été créée à l'aide de territoire=NOUS. Par conséquent, le format de la date se présente comme suit:
Vous pouvez obtenir le code de territoire à partir de DB CFG.
Qui est, le format est MM/JJ/AAAA. Si vous voulez changer le format, vous pouvez lier la collection de db2 utilitaire de packages pour utiliser un format de date différent.
Pour obtenir la date du jour, heure et horodatage à l'aide de SQL,(en gros vous donne une idée de ce que le format de la date) de référence appropriés DB2 registres:
Le sysibm.sysdummy1 table est un spécial table en mémoire qui peut être utilisé pour découvrir la valeur de DB2 registres
La fonction DATE fonctionne toujours, même si l'on exclut les guillemets dans la fonction, mais le résultat n'est pas correct:
Lorsque la DATE fonction récupère une chaîne de caractères en entrée, il suppose qu'il est valable de représentation des caractères d'une base de données DB2 date, et le convertit en conséquence. En revanche, lorsque l'entrée est numérique, la fonction suppose qu'il représente le nombre de jours, moins un depuis le début de l'ère actuelle (qui est, 0001-01-01). Dans la requête ci-dessus l'entrée était 2001-09-22, qui est égal à (2001-9)-22, ce qui équivaut à 1970 jours.
Et si tous les ci-dessus sont applicables, la commande ci-dessous devrait fonctionner correctement pour votre question.
Utiliser ce format.