Bonjour, j'ai essayé les différentes méthodes trouvées sur le forum sans succès.

La base est Oracle 10gR2. Avec une base 9i, je n'avais pas de problème.

Soit le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
Select VALIDE_AU, ID Into periode_fin, exercice_id
            from CO_EXERCICE
           Where VALIDE_DU <= :new.DATE_VALEUR
             and VALIDE_AU >= :new.DATE_VALEUR
             and DB_ELEMENT_ID = :new.DB_ELEMENT_ID;
 
ou
 
Select VALIDE_AU, ID Into periode_fin, exercice_id
            from CO_EXERCICE
           Where TO_CHAR(VALIDE_DU,'DD-MON-YY') <= :new.DATE_VALEUR
             and TO_CHAR(VALIDE_AU,'DD-MON-YY') >= :new.DATE_VALEUR
             and DB_ELEMENT_ID = :new.DB_ELEMENT_ID;
 
ou 
 
Select VALIDE_AU, ID Into periode_fin, exercice_id
            from CO_EXERCICE
           Where TO_DATE(TO_CHAR(VALIDE_DU,'DD-MON-YY'),'DD-MON-YY') <= :new.DATE_VALEUR
             and TO_CHAR(VALIDE_AU,'DD-MON-YY'),'DD-MON-YY') >= :new.DATE_VALEUR
             and DB_ELEMENT_ID = :new.DB_ELEMENT_ID;
Et j'ai également essayé les conversions sur le champ ":new.DATE_VALEUR" sans succès.

Dans une fenêtre SQL j'obtiens le résultat suivant (avec ou sans les conversions explicites) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
SQL> select id, valide_du, valide_au
  2    from co_exercice
  3    where valide_du <= '01-JAN-2009' and
  4             valide_au >= '01-JAN-2009' and
  5            db_element_id = 5;
 
           ID VALIDE_DU VALIDE_AU
---------- --------- ---------
        56 01-JAN-09 31-DEC-09
 
SQL> select id, valide_du, valide_au
  2    from co_exercice
  3    where valide_du <= '01-JAN-09' and
  4             valide_au >= '01-JAN-09' and
  5             db_element_id = 5;
 
        ID VALIDE_DU VALIDE_AU
---------- --------- ---------
        56 01-JAN-09 31-DEC-09
 
SQL> select id, valide_du, valide_au
  2    from co_exercice
  3    where valide_du <= to_date('01-JAN-09','DD-MON-YY') and
  4            valide_au >=  to_date('01-JAN-09','DD-MON-YY') and
  5            db_element_id = 5;
 
        ID VALIDE_DU VALIDE_AU
---------- --------- ---------
        56 01-JAN-09 31-DEC-09
J'ai également vérifié les NLS_*PARAMETERS, soit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
 
SQL> SELECT * FROM NLS_SESSION_PARAMETERS;
 
PARAMETER                      VALUE
------------------------------ ----------------------------------------
NLS_LANGUAGE                   AMERICAN
NLS_TERRITORY                  AMERICA
NLS_CURRENCY                   $
NLS_ISO_CURRENCY               AMERICA
NLS_NUMERIC_CHARACTERS         .,
NLS_CALENDAR                   GREGORIAN
NLS_DATE_FORMAT                DD-MON-RR
NLS_DATE_LANGUAGE              AMERICAN
NLS_SORT                       BINARY
NLS_TIME_FORMAT                HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM
 
PARAMETER                      VALUE
------------------------------ ----------------------------------------
NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY              $
NLS_COMP                       BINARY
NLS_LENGTH_SEMANTICS           BYTE
NLS_NCHAR_CONV_EXCP            FALSE
 
17 rows selected.
 
SQL> SELECT * FROM NLS_INSTANCE_PARAMETERS;
 
PARAMETER                      VALUE
------------------------------ ----------------------------------------
NLS_LANGUAGE                   AMERICAN
NLS_TERRITORY                  AMERICA
NLS_SORT
NLS_DATE_LANGUAGE
NLS_DATE_FORMAT
NLS_CURRENCY
NLS_NUMERIC_CHARACTERS
NLS_ISO_CURRENCY
NLS_CALENDAR
NLS_TIME_FORMAT
NLS_TIMESTAMP_FORMAT
 
PARAMETER                      VALUE
------------------------------ ----------------------------------------
NLS_TIME_TZ_FORMAT
NLS_TIMESTAMP_TZ_FORMAT
NLS_DUAL_CURRENCY
NLS_COMP
NLS_LENGTH_SEMANTICS           BYTE
NLS_NCHAR_CONV_EXCP            FALSE
 
17 rows selected.
 
SQL> SELECT * FROM NLS_DATABASE_PARAMETERS;
 
PARAMETER                      VALUE
------------------------------ ----------------------------------------
NLS_LANGUAGE                   AMERICAN
NLS_TERRITORY                  AMERICA
NLS_CURRENCY                   $
NLS_ISO_CURRENCY               AMERICA
NLS_NUMERIC_CHARACTERS         .,
NLS_CHARACTERSET               WE8ISO8859P15
NLS_CALENDAR                   GREGORIAN
NLS_DATE_FORMAT                DD-MON-RR
NLS_DATE_LANGUAGE              AMERICAN
NLS_SORT                       BINARY
NLS_TIME_FORMAT                HH.MI.SSXFF AM
 
PARAMETER                      VALUE
------------------------------ ----------------------------------------
NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY              $
NLS_COMP                       BINARY
NLS_LENGTH_SEMANTICS           BYTE
NLS_NCHAR_CONV_EXCP            FALSE
NLS_NCHAR_CHARACTERSET         AL16UTF16
NLS_RDBMS_VERSION              10.2.0.1.0
 
20 rows selected.
Et là, honnêtement, je sèche. Est-ce que qqn aurait une idée?

Merci d'avance.