Le format par défaut utilisé pour les dates est déterminée par le code du territoire de la base de données DB2 (qui peut être spécifié au moment de la création de bases de données). Par exemple, ma base de données a été créée en utilisant territory = US. Par conséquent le format de date ressemble à ce qui suit:
values current date
1
----------
05/30/2003
1 record(s) selected.
Vous pouvez obtenir le code de territoire à partir de DB CFG.
db2 get db cfg | egrep 'code|territory'
Database territory = US
Database code page = 1208
Database code set = UTF-8
Database country/region code = 1
C'est, le format est MM/JJ/AAAA. Si vous souhaitez modifier le format, vous pouvez lier la collection de packages d'utilitaires db2 pour utiliser un format de date différent.
Pour obtenir la date, l'heure et l'horodatage en utilisant SQL, (vous donne essentiellement une idée de ce que le format de la date est) référencent les registres DB2 appropriés: Le tableau sysibm.sysdummy1 est une en mémoire spéciale table qui peut être utilisé pour découvrir la valeur des registres DB2
db2 "SELECT current date FROM sysibm.sysdummy1 "
1
----------
06/02/2014
1 record(s) selected.
la fonction DATE fonctionne toujours même si nous laissons les guillemets dans la fonction, mais le résultat est incorrect:
db2 "SELECT date(2001-09-22) FROM sysibm.sysdummy1 "
1
----------
05/24/0006
1 record(s) selected.
Lorsque la fonction DATE reçoit une chaîne de caractères en entrée, elle suppose qu'il s'agit d'une représentation de caractère valide d'une date DB2 et la convertit en conséquence. En revanche, lorsque l'entrée est numérique, la fonction suppose qu'elle représente le nombre de jours moins un depuis le début de l'ère actuelle (c'est-à-dire 0001-01-01). Dans la requête ci-dessus, l'entrée était 2001-09-22, ce qui équivaut à (2001-9) -22, ce qui équivaut à 1970 jours.
Et si tout ce qui précède est applicable, la commande ci-dessous devrait fonctionner correctement pour votre problème.
SELECT * FROM table WHERE registrationdate > '10/01/2002';
Comment est la colonne "registrationdate" définie? Peut-être que le type de données de la colonne n'est pas une date, si c'était le cas, alors votre requête d'origine aurait dû fonctionner. – NealB