2011-01-20 2 views
1

Vraiment déteste les dates dans Oracle mais tout ce que je veux faire est juste à une requête de base pour trouver si une ligne ou des lignes qui sont égales à une date (le format de la date est 17-JAN-11 dans la table Oracle). J'utilise Toplink pour essayer de former la requête.Requête SQL pour trouver une ligne correspondant à une date dans Toplink

Mon code est comme ceci:

ReadAllQuery query = new ReadAllQuery(FooMyTable.class); 
ExpressionBuilder builder = query.getExpressionBuilder(); 

if (dateFoo != null) 
    query.setSelectionCriteria(builder.getField("REQUEST_CREATED_DATE").equal(dateFoo)); 

....

Il ramène toujours aucune ligne et je suppose que ce que je devrais utiliser truncateDate() ou quelque chose, mais je ne peux pas sur la syntaxe. Quelqu'un peut-il aider ??, ne pouvait pas trouver quelque chose de décent via Google d'où cette publication. MISE À JOUR: Maintenant, je sais que c'est quelque chose avec l'heure et les dates - pour les lignes sans temps, juste une date, le code ci-dessus fonctionne, mais si la valeur de la date a aussi un temps, elle échoue .

Répondre

1

code réel besoin est:

query.setSelectionCriteria(builder.getField("REQUEST_CREATED_DATE").truncateDate("DD").equal(dateFoo)); 

Le message d'erreur:

ORA-01898: too many precision specifiers Error Code: 1898 

était dû au masque de format étant incorrect - que je doit avoir la date arrondi au jour neareset.

1

Quel est le code SQL généré? truncateDate ("DD") semble fonctionner correctement.

Questions connexes