sql >> Databasteknik >  >> RDS >> Oracle

Hur man använder QUERY i expdp för att bara extrahera data från de senaste 3 månaderna

Ta bort semikolonet i QUERY parameter.:

QUERY=TABLE1,TABLE2:"where TABLE1_STARTTIME >= TO_DATE('01-AUG-2015','dd-mon-yyyy') 
                     and TABLE2_STARTIME >= TO_DATE('01-AUG-2015','dd-mon-yyyy')" 

Till en sidoanteckning:

Inte direkt relaterat till ditt problem. Men kom ihåg TO_DATE är NLS-beroende . Du bör ange NLS_DATE_LANGUAGE , annars kan din fråga misslyckas för ett annat nls_date_language.

Till exempel,

SQL> alter session set nls_date_language='FRENCH';

Session altered.

SQL> SELECT TO_DATE('01-AUG-2015','dd-mon-yyyy') FROM DUAL;
SELECT TO_DATE('01-AUG-2015','dd-mon-yyyy') FROM DUAL
               *
ERROR at line 1:
ORA-01843: not a valid month


SQL> SELECT TO_DATE('01-AUG-2015','dd-mon-yyyy', 'nls_date_language=ENGLISH') FROM DUAL;

TO_DATE('01
-----------
01-AO█T -15

Jag skulle föredra att använda ANSI Date literal , när du inte har någon tidsdel . Det är NLS-oberoende . Den använder ett fast format ÅÅÅÅ-MM-DD .

Till exempel,

SQL> alter session set nls_date_language='FRENCH';

Session altered.

SQL> SELECT DATE '2015-08-01' FROM DUAL;

DATE'2015-0
-----------
01-AO█T -15

SQL> alter session set nls_date_language='AMERICAN';

Session altered.

SQL> SELECT DATE '2015-08-01' FROM DUAL;

DATE'2015
---------
01-AUG-15



  1. Odd IntegrityError på MySQL:#1452

  2. Vad är ett index i SQL?

  3. PHP Ta bort flera rader med kryssrutan

  4. Varför accepterar detta inte e-postadresser med ett bindestreck efter @?