Sqlldr date format

Dear experts,
I'm trying to load txt file into table via sqlldr. I'm receiving error "Rejected - Error on table TEST_TABLE, column PERIOD_START_TIME. ORA-01843: not a valid month
The date format in flat txt file is MM:DD:YYYY; in the output table I want to have is DD.MM.YYYY
It looks that sqlldr wrongly interprets input date format - when the input is 07-08-2012 then the output is 07.08.2012 so it assumes that the input is in format MM-DD-YYYY instead of DD-MM-YYYY. And when the day is higher than 12 (13,14 etc) then an error appears
Do you know where/how to force SQLLDR to interpret it correcly? Is it somehow related to NLS_Lang. settings?
Control file looks as follow:
OPTIONS (SKIP=1)
LOAD DATA
INFILE test.txt
APPEND
INTO TABLE TEST_TABLE
FIELDS TERMINATED BY ';'
TRAILING NULLCOLS
(NE_ID,
LAC_ID,
PERIOD_START_TIME DATE 'DD.MM.YYYY HH24:MI:SS',
PERIOD_DURATION,
NSCURRENT,
NSAVERAGE
Table definition:
NE_ID     NUMBER     
LAC_ID     NUMBER     
PERIOD_START_TIME     DATE     
PERIOD_DURATION     NUMBER     
NSCURRENT     NUMBER
NSAVERAGE     NUMBER
INPUT DATA:
NE_ID;LAC_ID;PERIOD_START_TIME;PERIOD_DURATION;NSCURRENT;NSAVERAGE;
576527001;37000;07-16-2012 09:00:00;60;24846;24956;
576527001;37000;07-08-2012 10:00:00;60;1;1
Thanks in advance for any hints
Rgds
Lukasz

Hi, Lukasz,
Welcome to the forum!
user8640349 wrote:
Dear experts,
I'm trying to load txt file into table via sqlldr. I'm receiving error "Rejected - Error on table TEST_TABLE, column PERIOD_START_TIME. ORA-01843: not a valid month
The date format in flat txt file is MM:DD:YYYY; in the output table I want to have is DD.MM.YYYYIn the table, if the column is a DATE, then it won't have either format. Format, such as 'MM:DD:YYYY' versus 'DD.MM.YYYY' only applies to strings.
It looks that sqlldr wrongly interprets input date format - when the input is 07-08-2012 then the output is 07.08.2012 so it assumes that the input is in format MM-DD-YYYY instead of DD-MM-YYYY. And when the day is higher than 12 (13,14 etc) then an error appears
Do you know where/how to force SQLLDR to interpret it correcly? Is it somehow related to NLS_Lang. settings?
Control file looks as follow:
OPTIONS (SKIP=1)
LOAD DATA
INFILE test.txt
APPEND
INTO TABLE TEST_TABLE
FIELDS TERMINATED BY ';'
TRAILING NULLCOLS
(NE_ID,
LAC_ID,
PERIOD_START_TIME DATE 'DD.MM.YYYY HH24:MI:SS',The format you give after the keyword DATE tessls what the input data looks like. If the month comes before the day in your input file, then you should be saying
{code}
PERIOD_START_TIME DATE 'MM.DD.YYYY HH24:MI:SS',
{code}
PERIOD_DURATION,
NSCURRENT,
NSAVERAGE
Table definition:
NE_ID     NUMBER     
LAC_ID     NUMBER     
PERIOD_START_TIME     DATE     
PERIOD_DURATION     NUMBER     
NSCURRENT     NUMBER
NSAVERAGE     NUMBER
INPUT DATA:
NE_ID;LAC_ID;PERIOD_START_TIME;PERIOD_DURATION;NSCURRENT;NSAVERAGE;
576527001;37000;07-16-2012 09:00:00;60;24846;24956;
576527001;37000;07-08-2012 10:00:00;60;1;1SQL*Loader only controls how data gets into a table. It has nothing to do with what you do with that data after it is in the table.
If you want a DATE column displayed in a particular format, then use TO_CHAR in the query that produces the display, or change NLS_DATE_FORMAT to set the default date format in your session. For example:
{code}
ALTER SESSION SET NLS_DATE_FORMAT = 'DD.MM.YYYY HH24:MI:SS';
SELECT ename
,     hiredate
FROM     scott.emp
ORDER BY hiredate
{code}
Output:
{code}
ENAME HIREDATE
SMITH 17.12.1980 00:00:00
ALLEN 20.02.1981 00:00:00
WARD 22.02.1981 00:00:00
JONES 02.04.1981 00:00:00
BLAKE 01.05.1981 00:00:00
CLARK 09.06.1981 00:00:00
TURNER 08.09.1981 00:00:00
MARTIN 28.09.1981 00:00:00
KING 17.11.1981 00:00:00
JAMES 03.12.1981 00:00:00
FORD 03.12.1981 00:00:00
MILLER 23.01.1982 00:00:00
SCOTT 19.04.1987 00:00:00
ADAMS 23.05.1987 00:00:00
{code}
It doesn't matter what format the date information was in before it was entered into the table. In the table, all DATEs have the same format.

Similar Messages

  • SQLLDR date format issue with AM/PM

    Hello Experts,
    I am unable to load data into my table in oracle 11G using sql loader.
    I will put my problem in a simpler way.
    SQL> sho parameter nls_date_format
    nls_date_format                      string      DD-MM-YYYY HH12:MI:SS AM
    SQL>
    SQL> desc hero
    Name                                      Null?    Type
    DAT_1                                              TIMESTAMP(6)
    hero.ctl
    LOAD DATA                                                                      
    INFILE 'hero.dat'                                                              
    INTO TABLE HERO                                                                
    FIELDS TERMINATED BY ','                                                       
    TRAILING NULLCOLS                                                              
       DAT_1     DATE "DD/MM/YYYY HH12:MI:SS AM"                                                                 
    hero.log
       Column Name                  Position   Len  Term Encl Datatype
    DAT_1                               FIRST     *   ,       DATE DD/MM/YYYY HH12:MI:SS AM
    Record 1: Rejected - Error on table HERO, column DAT_1.
    ORA-01858: a non-numeric character was found where a numeric was expected
    Table HERO:
      0 Rows successfully loaded.
      1 Row not loaded due to data errors.
      0 Rows not loaded because all WHEN clauses were failed.
      0 Rows not loaded because all fields were null.
    hero.bad
    "28/2/2011  11:48:00 PM"Constraints :-
    1. The data from the flat file cannot be formatted / edited / changed.
    2. The table's datatypes cannot be altered.
    Regards,
    Valli

    The problem is that you are trying to put a DATE into a TIMESTAMP column. The DATE needs converting to a timestamp. This would be easier if you used external tables as you could do the conversion on the fly when doing an insert...select... from the external table, rather than relying on the outdated SQL*Loader functionality.

  • Date format in sqlldr

    I need a help to loading the SQL Loader. A date format has to be done in the control script.
    in OPT_EXPRN_D column The below logic has to be included in the ctl file.
    Eg: select trunc(to_date('01-JAN-09'),'mm') + (6 - to_char(trunc(to_date('01-JAN-09'),'mm'),'d')) + 14 from dual -- apply kind of this logic in ctl file
    OPTIONS(ERRORS=100000, ROWS=2000, BINDSIZE=300000)
    LOAD DATA
    INFILE '/home/btchproc/load_process/ftp_home/ACATTRAN.DAT'
    BADFILE '/home/btchproc/load_process/bad_files/acattran.bad'
    INTO TABLE acat_fact_test
    APPEND
        ACE_FACT_I               POSITION(01:10)    INTEGER EXTERNAL,
        PRO_DIMN_I               POSITION(11:20)    INTEGER EXTERNAL,
        ACAT_PRCS_D            POSITION(45:54)    DATE    "YYYY-MM-DD" nullif acat_prcs_d=BLANKS,
        BRN_I                         POSITION(55:57)    CHAR    "NVL(:brn_i,' ')",
        FA_I                          POSITION(58:63)    CHAR    "NVL(:FA_I,' ')",
         OPT_EXPRN_D           POSITION(904:913)  DATE    "YYYY-MM-DD" nullif trunc(:opt_exprn_d,'mm') + (6 - to_char(trunc(:opt_exprn_d,'mm'),'d')) + 14  =BLANKS
    )

    I have used the exact format still error...
    here is the control file position.
    OPT_EXPRN_D                   POSITION(904:913)  DATE  "YYYY-MM-DD" "TRUNC (TO_DATE (:OPT_EXPRN_D), 'mm') + (6 - TO_CHAR (TRUNC (TO_DATE (:OPT_EXPRN_D), 'mm'), 'd')) + 14",
    here is the actual control file data
    000027734300000000000174760084915401522605202009-04-02JR JR 22 4115047100JR 07968B2009089005835402213000012009-04-062F FULRCITIGROUP GLOBAL MARKETS, INC.                    1         02210418JR 07968            IRWIN R & SONDRA FOX TTEES IRWIN & SONDRA FOX REV TR        547401451000000000CT         251272534            1492-01-01000298234           12/1/97                                                     12/1/97                                                   **                                              000017    0135OPT US                                                                                                                                                                      0000000000005.000000000000000.0000S   0000000000000.0000 M                                                                                                                                     SPOJNJ   2009-04-01F000000004000     C    51272534 - 02                                     1010 0221P                                                                                                                                                                                                           
    000027734400000000000174760084915401522605202009-04-02JR JR 22 4115047100JR 07968B2009089005835402213000012009-04-062F FULRCITIGROUP GLOBAL MARKETS, INC.                    1         02210418JR 07968            IRWIN R & SONDRA FOX TTEES IRWIN & SONDRA FOX REV TR        547401451000000000CT         251272534            1492-01-01000298234           12/1/97                                                     12/1/97                                                   **                                              000018    0135OPT US                                                                                                                                                                      0000000000027.000000000000000.0000S   0000000000000.0000 M                                                                                                                                     SCOMQF   2009-04-01F000000001900     C    51272534 - 02                                     1010 0221P                                                                                                                                                                                                           
    Record 11938: Rejected - Error on table EDW_OWNER.ACAT_FACT_TEST, column OPT_EXPRN_D.
    ORA-01821: date format not recognizedEdited by: user520824 on Apr 6, 2009 10:21 AM

  • How to define the date format for this date string

    2006-11-13 00:00:00.0
    How to define the date format in control file for sqlldr. "yyyy-mm-dd hh24:mi:ss" or "yyyy-mm-dd hh24:mi:ss.FF1" does not work
    thanks,

    SQL> desc t
    Name                                      Null?    Type
    TS                                                 TIMESTAMP(6)
    SQL> !cat t.ctl
    load data
    into table t
    truncate
    (ts timestamp "YYYY-MM-DD HH24:MI:SS.FF1")
    SQL> !cat t.dat
    2006-11-13 00:00:00.0
    SQL> !sqlldr userid=scott/tiger control=t.ctl data=t.dat log=t.log
    SQL*Loader: Release 10.2.0.3.0 - Production on Fri Sep 7 11:19:28 2007
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    Commit point reached - logical record count 1
    SQL> select * from t;
    TS
    13-NOV-06 12.00.00.000000 AMBest regards
    Maxim

  • Loading date format (Hijra)

    Hi all,
    We have a Date field which is in the format YYMMDD (Hijra).
    Can anyone tell us how to load the specific field by SQL* Loader (setting the NLS Parameters).
    Our database is in Western European Character set.
    Do we need to change the Character set in order to load the above date format.
    Thanks in advance,

    Vignesh,
    NLS_CALENDAR='English Hijrah'
    or
    NLS_CALENDAR='Arabic Hijrah'
    NLS_DATE_FORMAT='YYMMDD'
    [These can be set as environmental variables from the sqlldr session]
    For more information see:
    Oracle® Database Globalization Support Guide
    10g Release 1 (10.1)
    Part Number B10749-02
    I hope this is helpful,
    Regards,
    Turloch
    Oracle Migration Workbench Team

  • Problem with Date formatting

    Hi Tim,
    I am facing some issues with formatting the date using XMLP. The following is the sample XML data file i am using:
    <LIST_G_HEADER>
    <G_HEADER>
    <QUOTE_HEADER_ID>1455</QUOTE_HEADER_ID>
    <QUOTE_NUMBER>2027</QUOTE_NUMBER>
    <QUOTE_VERSION>1</QUOTE_VERSION>
    <QUOTE_NAME>Test GM Report - Rabindra</QUOTE_NAME>
    <SOURCE_NAME>Fletcher, MR. Paul</SOURCE_NAME>
    <QUOTE_DATE>27-OCT-2005</QUOTE_DATE>
    <CURRENCY_CODE>GBP</CURRENCY_CODE>
    </G_HEADER>
    </LIST_G_HEADER>
    The formatting i use for my date field i.e <QUOTE_DATE>, ends up either with NO formatting or giving me an error "[010906_114656657][][ERROR] Invalid XSD string: 27-OCT-2005 (XMLP Template Viewer)". The default formatting available with the form field dialog box (MS-Word) feature also doesn't work.
    I have the following formatting for this field in the form field:
    <?format-date:QUOTE_DATE; 'MEDIUM' ?>
    When i read the user guide, it reads that the date should be in the canonical format i.e: YYY-MM-DDThh:mm:ss+HH:MM
    However i am not getting the date from the base table's in this format. Is the error happening due to incorrect format or is there some other reason behind this? Please let me know, how can i overcome this issue.
    Thx,
    Nitin

    As i mentioned in another thread
    substring function and date format
    Please use this standards
    <?xdofx:expression?>
    for extended SQL functions or
    <?xdoxslt:expression?>
    for extended XSL functions.
    Use like
    <?xdofx:rpad(LAST_NAME),30, ’x’)?>
    <?xdofx:Instr(’abcabcabc’,’a’,2))?>
    <?xdofx:upper(char)?>
    <?xdofx:lower (char)?>
    <?xdofx:greatest ( expr [, expr]... )?>
    ETC.....

  • How can we give the Data Format (File Type ) in Runtime

    Hi all,
    How can we give the Data Format (File Type ) in Runtime for the following method,
    cl_gui_frontend_services=>gui_download.
    Thanks in advance
    Sri

    There is a filetype parameter which you can set
    CALL METHOD cl_gui_frontend_services=>gui_download
      EXPORTING
    *    BIN_FILESIZE              =
        filename                  =
    *    FILETYPE                  = 'ASC'
    *    APPEND                    = SPACE
    *    WRITE_FIELD_SEPARATOR     = SPACE
    *    HEADER                    = '00'
    *    TRUNC_TRAILING_BLANKS     = SPACE
    *    WRITE_LF                  = 'X'
    *    COL_SELECT                = SPACE
    *    COL_SELECT_MASK           = SPACE
    *    DAT_MODE                  = SPACE
    *    CONFIRM_OVERWRITE         = SPACE
    *    NO_AUTH_CHECK             = SPACE
    *    CODEPAGE                  = SPACE
    *    IGNORE_CERR               = ABAP_TRUE
    *    REPLACEMENT               = '#'
    *    WRITE_BOM                 = SPACE
    *    TRUNC_TRAILING_BLANKS_EOL = 'X'
    *  IMPORTING
    *    FILELENGTH                =
      changing
        data_tab                  =
    *  EXCEPTIONS
    *    FILE_WRITE_ERROR          = 1
    *    NO_BATCH                  = 2
    *    GUI_REFUSE_FILETRANSFER   = 3
    *    INVALID_TYPE              = 4
    *    NO_AUTHORITY              = 5
    *    UNKNOWN_ERROR             = 6
    *    HEADER_NOT_ALLOWED        = 7
    *    SEPARATOR_NOT_ALLOWED     = 8
    *    FILESIZE_NOT_ALLOWED      = 9
    *    HEADER_TOO_LONG           = 10
    *    DP_ERROR_CREATE           = 11
    *    DP_ERROR_SEND             = 12
    *    DP_ERROR_WRITE            = 13
    *    UNKNOWN_DP_ERROR          = 14
    *    ACCESS_DENIED             = 15
    *    DP_OUT_OF_MEMORY          = 16
    *    DISK_FULL                 = 17
    *    DP_TIMEOUT                = 18
    *    FILE_NOT_FOUND            = 19
    *    DATAPROVIDER_EXCEPTION    = 20
    *    CONTROL_FLUSH_ERROR       = 21
    *    NOT_SUPPORTED_BY_GUI      = 22
    *    ERROR_NO_GUI              = 23
    *    others                    = 24

  • Need to convert into date format

    Hi all,
    I need to convert '2008-11-26T11:07:38-06:00' [YYYY]-[MM]-[DD]T[HH]:[MM]:[SS][TIMEZONE]
    in format 'YYYY-MM-DD HH:MM:SS'.
    Thanks in advance.

    >
    Thank you for your reply
    But it is giving me output as '26-NOV-08'
    And I want in format '2008-11-26 07:38' i.e 'YYYY-MM-DD HH:MM'.
    >
    Then you are not looking for a date, You are looking for a string.
    The date format that gets displayed is dependent on nls_date_format parameter.
    If you want a string in the format you asked, then,
    SELECT TO_CHAR ( TO_DATE ( '2008-11-26T11:07:38-06:00', 'YYYY-MM-DD"T"HH24:MI:SS"-06:00"'), 'YYYY-MM-DD HH24:MM:SS')
      FROM DUAL;Or if you just want the date to be displayed like that then
    Do,
    SQL> alter session set nls_date_Format="YYYY-MM-DD HH24:MI:SS";
    Session altered.
    SQL> SELECT TO_DATE ( '2008-11-26T11:07:38-06:00', 'YYYY-MM-DD"T"HH24:MI:SS"-06:00"') dt
      2    FROM DUAL;
    DT
    2008-11-26 11:07:38
    SQL> G.

  • Changing date format at reporting level

    Hello,
    Will u plz tell me how can i change the date format at reporting level?
    I want to display date in dd/mm/yyyy, but by default its showing mm/dd/yyyy.
    Delta is already loaded in the system, so i don't want to disturb regular data loading.
    Is there any way so that i can change the format of date.
    Plz help me out.
    Thanks,
    Regards,
    Steve

    Hi steve
    There r so many postings on the same topic
    go through these previous threads
    date format
    Date format
    u can find solution
    regards
    Ravi Kiran

  • How to convert the numeric to date format

    HI ,
         We have created the date KF and selected the data type as DEC-numeric or counter and add in the cube.
          the data for this fields in the cube are in numerics like  734.504, but when we execute the report it is converted in to date format dd.mm.yyyy.
                    My issue how this conversion is working in the backend while executing the report.
    Regards.
    venkata

    Conversion is happening because of the type you had selected for the KF while creating it.
    Check the type of the Key figure?
    While creating the KF you might have selected the Type as Date and Data type -DEC : Counter or amount field with comma and sign.
    that's the reason why you are getting the output values displayed in dd.mm.yyyy format.
    For amount field - create a KF with type "AMOUNT" and unit -0currency or specify the currency of that region.
    regards
    KP

  • How to get Date Format from Local Object.

    Hi All,
    I am new to Web Channel.
    I need to know Date format From date of locale.
    suppose there is a date "01/25/2010" date in date field I want to get string "mm/dd/yyyy". Actually I have to pass date format to backend when I call RFC. 
    Is there any way to get Date format from "Locale" object. I should get date format for local object
    I get local object from "UserSessionData" object but how to get Date format from it.
    I am not looking for Date value. I am looking for current local date format ("mm/dd/yyyy or dd/mm/yyyy or mon/dd/yyyy) whatever local date format.  I could not find example which show how to get date format from "Locale" object.
    Any help will be appreciated with rewards.
    Regards.
    Web Channel

    Hi,
    You can get it from "User" or "Shop" business object.
    Try to get User or Shop Business Object as shown below.
    BusinessObjectManager bom = (BusinessObjectManager) userSessionData.getBOM(BusinessObjectManager.ISACORE_BOM);
    User user = bom.getUser();
    char decimalNotation = user.getDecimalPointFormat().getGroupingSeparator();
    If you are seeing "1,234.00" then above code will return "."
    I hope this information help you to resolve your issue.
    eCommerce Developer.

  • How to change default Date format in BO 6.5 SP4

    A problem with date display has been reported to me by one of our users -  in BO 6.5 - since installing SP4.
    The default date format is now MM/DD/YYYY
    I have tried to recreate this on my PC and have been able to confirm that this is the case.
    Most of our PC's will have two versions of Business Objects on them - for 5.1.6 and for 6.5 - that is the case for my PC.
    If I create a new BO document based on a spreadsheet with three entries in the spreadsheet as follows:-
    20/01/2009    20-Jan-2009  20th January 2009
    This displays in BO 6.5 as
    1/20/2009   1/20/2009    20th January 2009
    My PC regional setting is UK and the time displays DD/MM/YYYY
    Can you advise how to correct this problem please.

    Hi Sebastien
    Thank you for your response.
    I haven't checked Dimension in universe because this is happening even when datasource is an Excel spreadheet - as per details in previous post.
    I have looked for *.sbo files and found one for ODBC.sbo in the Version 5 folders on PC - with date format details in it which I've changed - that doesn't make any difference.
    Any other ideas?
    Regards
    Linda

  • Date format issue in oracle database

    Hi,
    Back end : Oracle 11.2.0.2.0
    Front end : Forms 11g
    In our application we are facing issue with TO_DATE('DD/MM/YYY') Date format conversion.
    Example: TO_DATE(P_date,'DD/MM/YYYY') giving the result as 20-Dec-0009
    In the above eg the Parameter P_date is coming as '20-dec-09' from the front end (forms 11g)
    The Nls_date_format parameter at database level is set as 'DD-MON-RR'
    Its working fine after changing the conversion as TO_DATE(P_date,'DD/MM/RRRR') .- If we do like this , we need to change in many places , so instead of doing this, is there other solution wrt database settings/Application settings where we can change and fix this issue
    pls help us to solve the issue.
    Regards.
    sathish k

    892913 wrote:
    Hi,
    Back end : Oracle 11.2.0.2.0
    Front end : Forms 11g
    In our application we are facing issue with TO_DATE('DD/MM/YYY') Date format conversion.
    Example: TO_DATE(P_date,'DD/MM/YYYY') giving the result as 20-Dec-0009
    In the above eg the Parameter P_date is coming as '20-dec-09' from the front end (forms 11g)
    The Nls_date_format parameter at database level is set as 'DD-MON-RR'
    Its working fine after changing the conversion as TO_DATE(P_date,'DD/MM/RRRR') .- If we do like this , we need to change in many places , so instead of doing this, is there other solution wrt database settings/Application settings where we can change and fix this issue
    pls help us to solve the issue.
    Regards.
    sathish kWell the solution is right in front of you. As you say, your database environment is set to DD-MON-RR so your database is set to use 2 digit years (something most people moved away from with the millenium bug more than 10 years ago now). You can either change all your code to use RRRR as you've found, or change your database NLS setting to DD-MON-RRRR and change your front end application to pass you a date with 4 digit years so you get e.g. '20-dec-2009'.
    So many people worked hard to resolve the millenium bug issues all those years ago, but still we have people, all these years later, who want to reintroduce the problem. So sad.

  • Problem with SQL*Loader and different date formats in the same file

    DB: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
    System: AIX 5.3.0.0
    Hello,
    I'm using SQL*Loader to import semi-colon separated values into a table. The files are delivered to us by a data provider who concatenates data from different sources and this results in us having different date formats within the same file. For example:
    ...;2010-12-31;22/11/1932;...
    I load this data using the following lines in the control file:
    EXECUTIONDATE1     TIMESTAMP     NULLIF EXECUTIONDATE1=BLANKS     "TO_DATE(:EXECUTIONDATE1, 'YYYY-MM-DD')",
    DELDOB          TIMESTAMP     NULLIF DELDOB=BLANKS          "TO_DATE(:DELDOB, 'DD/MM/YYYY')",
    The relevant NLS parameters:
    NLS_LANGUAGE=FRENCH
    NLS_DATE_FORMAT=DD/MM/RR
    NLS_DATE_LANGUAGE=FRENCH
    If I load this file as is the values loaded into the table are 31 dec 2010 and 22 nov *2032*, aven though the years are on 4 digits. If I change the NLS_DATE_FORMAT to DD/MM/YYYY then the second date value will be loaded correctly, but the first value will be loaded as 31 dec *2020* !!
    How can I get both date values to load correctly?
    Thanks!
    Sylvain

    This is very strange, after running a few tests I realized that if the year is 19XX then it will get loaded as 2019, and if it is 20XX then it will be 2020. I'm guessing it may have something to do with certain env variables that aren't set up properly because I'm fairly sure my SQL*Loader control file is correct... I'll run more tests :-(

  • Problem with date format mask 'D'

    I am experiencing an extremely thorny problem with the date format mask ‘D’. I am trying to use it to check whether today is a Monday. The variable v_temp_day is set to sysdate. For the last 4 weeks the code has behaved erratically – giving a different result at 02:00 than at 10:30 even though it is only taking account of the date. In desperation I inserted a debug statement formatting the date in a variety of ways – with interesting results. Oracle is somehow managing to tell us that today is simultaneously Monday and Tuesday depending on which format mask you choose. Anyone got any thoughts or suggestions?
    PROC_ID TO_CHAR(STAMP_TIM
    EVENT_SQLERRM
    RRHKP010 17092007 02:00:00
    TO_NUMBER( TO_CHAR( v_temp_day, D ) ) = 2. TO_CHAR( v_temp_day, D ) = 2. TO_CHAR( v_temp_day, DY ) = MON. TO_CHAR( v_temp_day, DAY )
    = MONDAY . TO_CHAR( v_temp_day, Day DD-MON-YYYY HH24MISS ) = Monday 17-SEP-2007 020000. TO_CHAR( v_temp_day, D ) = 2.
    SQL> select to_char( sysdate, 'D' ) from dual ;
    T
    1

    My book says the trunc(d,'iw') will return "same day of the week as Jan 1st of that year"It's bad book.
    Please read about [url http://oraclesvca2.oracle.com/docs/cd/B10501_01/server.920/a96540/functions176a.htm#80159]TRUNC & 'IW' Format Model and [url http://oraclesvca2.oracle.com/docs/cd/B10501_01/server.920/a96529/ch3.htm#50331]Database Globalization Support Guide: First Calendar Week of the Year in the manual.

Maybe you are looking for