Convert Teradata TIMESTAMP to SQL Server DateTime

I have a Teradata TimeStamp(6) field which I have imported into a VarChar field in a staging table.  The values look like this:
1/22/2010 00:00:00.000000
9/15/2003 00:00:00.000000
10/10/2006 00:00:00.000000
I'm trying to move it to a permanent table in a SQL Server 2008R2 DateTime field.
I've tried different combinations of using CAST/CONVERT in the SELECT as well as a Data Conversion step, but can't find the right combination.  The error is usually something like this:
Error: 0xC0202009 at HEFIN, OLE DB Destination 1 [97]: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 10.0"  Hresult: 0x80004005  Description: "Invalid character value for cast specification".
Error: 0xC020901C at HEFIN, OLE DB Destination 1 [97]: There was an error with input column "DW_LOAD_TS" (129) on input "OLE DB Destination Input" (110). The column status returned was: "The value could not be converted because
of a potential loss of data.".
Any suggestions?
-Al H

Well, changing your original post now makes the first response a bit of nonsense.  But I refer you to the ultimate guide to the datetime datatype and the issues you will face in trying to convert a string to one of these datatypes (and many related
issues).  You should bookmark Tibor's site and give it all a read when you have time.
Tibor - datetime guide
The convert function has a style argument that sets the expectation of the format within the string. Unfortunately, you have a format that is a problem.  If you are not concerned about the time portion, simply chop it off during the conversion (the
first query).  If you are using 2012, you can use the second (and if necessary use the locale option):
with cte as (select '1/22/2010 00:00:00.000000' as d1
union all select '9/15/2003 12:51:52.000000'
union all select '10/10/2006 00:00:00.000000')
select convert(datetime, left(d1, charindex(' ', d1) -1), 101) as x
from cte;
with cte as (select '1/22/2010 00:00:00.000000' as d1
union all select '9/15/2003 12:51:52.000000'
union all select '10/10/2006 00:00:00.000000')
select TRY_PARSE(d1 as datetime) as x
from cte;

Similar Messages

  • Labview Date to SQL Server DateTime Conversion

    I have inherited a database of legacy data (created by Labview software) and I need to import that data into a SQL Server 2000 database.
    One of the fields I'm importing includes a string of numbers which respresents a datetime field - in the following format:
    3172089659
    which represents the number of SECONDS since Jan 1 1904 12:00 am Universal Time
    (Was that a significate date in history ?)
    Is there a built in function within SQL that can help be convert this into a standard SQL Server DateTime format during import?
    Thank you
    Devon Kyle

    Devon,
    This can be somewhat database dependent. I don't know how the standard SQL Server handles date addition. However,most have it. One which I uses has the following:
    SECONDS( datetime-expr, integer-expr ) Add integer-expr seconds to the given date/time. If the integer-expr is negative, the appropriate number of seconds are subtracted from the date/time.
    Since you know the start date, this would easily calculate the date you are wanting.
    Hope this helps.
    Russ

  • How to convert Oracle database to Sql server Database

    Hi All,
    I have one database made in the Oracle 8i, i want to convert that database to Sql Server Database,
    Can anyone please give me the step by step process to do this conversion.
    Regards
    Ramesh Jha

    Try using the DTS (data transformation services) services of SQL Server 2000
    DTS is based on an OLE DB architecture that allows you to copy and transform data from a variety of data sources. For example: Oracle directly, using native OLE DB providers.
    Alternatively, you could follow the following broad steps for data migration (assuming you are retaining the same table structures in SQL Server, and that you are talking about SQL Server 2000).
    1. Get the CREATE scripts corresponding to each Oracle table / view / index. These can be reverse engineered from the database using a tool.
    2. Map Oracle datatypes to SQL server datatypes e.g: date maps to datetime/smalldatetime, numeric maps to one of int, bigint, smallint, etc depending on the range of values in the CREATE scripts.
    3. Indexes in SQL Server are of two types: Clustered / non-clustered. There can only be one clustered index on each table.
    4. Converting procedures and triggers will have to be line by line, since SQL Server uses a proprietary T-SQL instead of ORacle's PL/SQL
    I have yet to see a really good tool to do this migration, but it is possible to write a PL/SQL procedure / Pro*C program to automate the script creation for creating tables in the SQL Server database.
    For the actual data import into SQL Server, export the Oracle data table by table into flat files, and then use the import wizard of SQL Server enterprise manager

  • Need to convert DTS packages to SQL Server 2012 environment.

    Hi Friends,
    As Part of the Project Requirement,we need to convert DTS packages to SQL Server 2012 environment.
    Please sugest me best approach.
    Thanks

    Best approach is to re-design the packages in SSIS 2012 directy if it is feasible. Because most of the DTS feaures are discontinued and also you will have to clean up all errors that you are going to get after migration.
    Discontinued Integration Services Functionality in SQL Server 2012
    Otherwise you need to migrate it first to 2008R2 and then 2012 version.
    Below ones would be helpful for you:
    Migrate DTS packages to SSIS (SSIS2008R2)
    Support of DTS packages in 2008 R2
    Known DTS Package Migration Issues
    Cheers,
    Vaibhav Chaudhari

  • Converting MDX query into SQL Server 2008

    We have MDX query based OLAP CUbes.
    To reduce MDX based dependenies, we have to convert MDX based cube to sql server 2008 based queries.
    For this I need expert advise to convert below query to sql server 2008 based query :
    CREATE MEMBER CURRENTCUBE.Measures.[Ack Lost]
                        AS 'Sum(PeriodsToDate([Time].[Year], [Time].CurrentMember ), [Measures].[Lost])',
                        FORMAT_STRING = "#,#",
                        VISIBLE = 1;

    Hi Sachin,
    According to your description, you need to convert the MDX query to T-SQL query, right?
    Your MDX query is calculated measure that return the total value from the first sibling and ending with the given member. In T-SQL query we can use the query as Yogisha provided to achieve the same requirement. Now you need to a tool to convert all the MDX
    related SSAS cube queries to MS SQL Server 2008 based queries.
    Although MDX has some similarities with T-SQL these languages are in many ways different. Beginning to learn and comprehend SQL Server Analysis Services (SSAS) MDX queries can be difficult after one has spent years writing queries in T-SQL. Currently, there
    is no such a tool to convert a MDX query to T-SQL query since the structure difference between MDX and T-SQL. So you need to convert them manually, please refer to the links below to see the details.
    http://www.mssqltips.com/sqlservertip/2916/comparison-of-queries-written-in-tsql-and-sql-server-mdx/
    https://sqlmate.wordpress.com/2013/11/12/t-sql-vs-mdx-2/
    http://technet.microsoft.com/en-us/library/aa216779(v=sql.80).aspx
    Regards,
    Charlie Liao
    TechNet Community Support

  • Converting Oracle query to Sql Server with date manipulation

    The following SSIS statement works great in Oracle, and it parses successfully in the "Sql Task" window. In Oracle it returns
    this result:
    FROM_DT              THRU_DT
    16-Jan-2014      23-Jan-2014
    select
    case
    when to_char(to_date(sysdate,'dd-mon-yyyy'),'dd') <=7 then to_date('24'||to_char(add_months(sysdate,-1),'mmyyyy'),'ddmmyyyy')
    when to_char(to_date(sysdate,'dd-mon-yyyy'),'dd') <=15 then to_date('01'||to_char(sysdate,'mmyyyy'),'ddmmyyyy')
    when to_char(to_date(sysdate,'dd-mon-yyyy'),'dd') <=23 then to_date('08'||to_char(sysdate,'mmyyyy'),'ddmmyyyy')
    else to_date('16'||to_char(sysdate,'mmyyyy'),'ddmmyyyy')
    end as from_dt,
    case
    when to_char(to_date(sysdate,'dd-mon-yyyy'),'dd') <=7 then trunc(last_day(add_months(sysdate,-1)))
    when to_char(to_date(sysdate,'dd-mon-yyyy'),'dd') <=15 then to_date('07'||to_char(sysdate,'mmyyyy'),'ddmmyyyy')
    when to_char(to_date(sysdate,'dd-mon-yyyy'),'dd') <=23 then to_date('15'||to_char(sysdate,'mmyyyy'),'ddmmyyyy')
    else to_date('23'||to_char(sysdate,'mmyyyy'),'ddmmyyyy')
    end as thru_dt
    from sys.dual
    How can I convert this to Sql Server ?

    >>You mean you get the data from Oracle and tries to insert it into SQL Server?
    - no, sorry, I want to convert the syntax to Sql Server
    >>Are
    you running the query in OLEDB provider connected to the Oracle's database?
    - yes, this works fine now (after fixing this redundancy:
    to_char(to_date(sysdate,'dd-mon-yyyy'),'dd')change toto_char(sysdate,'dd')

  • Product keys to convert evaluation version of SQL Server Std 2014 to their SQL Server Standard 2014 Volume License

    Customer was asked for a product key to convert      evaluation version of SQL Server Std 2014 to their SQL Server Standard      2014
    Volume License.
    He cannot download the ISO as he is on a sterile server      on his client’s site.

    You may also try and look for PID in to DefaultSetup.ini file in the installation media, which can be found by going to the root folder of the SQL Server set media
    on the server or on the DVD, then look for this file in either the x64 or x86 folder.
    Keerthi Deep | Blog SQLServerF1 |
    Facebook

  • Convert SQL SERVER DATETIME into ORACLE TIMESTAMP

    I have to convert a column's datatype.
    The source column's datatype is DATETIME which is in SQL Server to TIMESTAMP(datatype in target which is oracle)
    Can anyone help me please

    Just issue ALTER TABLE MODIFY:
    SQL> create table tbl(c date)
      2  /
    Table created.
    SQL> insert into tbl values(sysdate)
      2  /
    1 row created.
    SQL> select to_char(c,'mm/dd/yyyy hh24:mi:ss') from tbl
      2  /
    TO_CHAR(C,'MM/DD/YY
    12/26/2009 20:50:58
    SQL> alter table tbl modify c timestamp
      2  /
    Table altered.
    SQL> select c from tbl
      2  /
    C
    26-DEC-09 08.50.58.000000 PM
    SQL> SY.

  • ORA-01841 Converting SQL Server DateTime to Oracle Date

    I have Oracle 11gR2 x64 running on my Win7 Enterprise x64 personal system. I'm trying to convert the TSQL to create a database in SQL Server 2008 Express for my C# class to Oracle, and I've run into a "interesting" problem loading date data.
    The SQL Server 2008 TSQL InvoiceDate column in the Invoices table has datatype DATETIME:
    *[InvoiceDate] [datetime] NOT NULL,*
    which Oracle does not support. The Oracle InvoiceDate column in the MMAB_Invoices table has datatype DATE:
    InvoiceDate DATE NOT NULL,
    The fun begins with the TSQL INSERT statements (for example):
    INSERT [dbo].[Invoices] ([InvoiceID], [CustomerID], [InvoiceDate], [ProductTotal], [SalesTax], [Shipping], [InvoiceTotal]) VALUES (18, 20, CAST(0x00009CFD00000000 AS DateTime), 151.0000, 11.3300, 6.2500, 168.5800)
    As you can see, whoever wrote the load script thought it would be totally awesome to convert hex (binary?) data to generate a date, instead of using data readable by a human being.
    BTW, the date generated is 2010-01-13 00:00:00.000.
    After Reading The Fabulous Manual and searching the OTN Discussion Fora, what I came up with is
    INSERT INTO MMAB_Invoices (CustomerID, InvoiceDate, ProductTotal, SalesTax, Shipping, InvoiceTotal) VALUES (20, TO_DATE(UTL_RAW.CAST_TO_VARCHAR2(HEXTORAW('00009CFD00000000')), 'YYYY-MM-DD HH:MI:SS'), 151.0000, 11.3300, 6.2500, 168.5800);
    which returned
    Error starting at line 846 in command:
    INSERT INTO MMAB_Invoices (CustomerID, InvoiceDate, ProductTotal, SalesTax, Shipping, InvoiceTotal) VALUES (20, TO_DATE(UTL_RAW.CAST_TO_VARCHAR2(HEXTORAW('00009CFD00000000')), 'YYYY-MM-DD HH:MI:SS'), 151.0000, 11.3300, 6.2500, 168.5800)
    Error report:
    SQL Error: ORA-01841: (full) year must be between -4713 and +9999, and not be 0
    *01841. 00000 - "(full) year must be between -4713 and +9999, and not be 0"*
    **Cause: Illegal year entered*
    **Action: Input year in the specified range*
    The PK InvoiceID is automatically generated by a BEFORE INSERT trigger that uses a sequence.
    Suggestions?
    Thanks.
    P.S. Happy New Year!!!

    Your hex conversion is certainly not returning a date format:
    sql> select UTL_RAW.CAST_TO_VARCHAR2(HEXTORAW('00009CFD00000000')) from dual;
    UTL_RAW.CAST_TO_VARCHAR2(HEXTORAW('00009CFD00000000'))
      ┐²To convert the hex number to decimal, simply use to_number:
    sql> select to_number('00009CFD00000000', 'xxxxxxxxxxxxxxxx') from dual;
    TO_NUMBER('00009CFD00000000','XXXXXXXXXXXXXXXX')
                                          1.7261E+14Now, before you can make any further calculations with that number, you need to know how it represents the date of 2010-01-13. Luckily, we've got Google nowadays. ;-)
    Sql server representation seems to be an 8 byte field. The first 4 bytes stores the number of days since SQL Server's epoch (1st Jan 1900). The second 4 bytes stores the number of milliseconds after midnight.
    sql> select to_number('00009CFD', 'xxxxxxxxxxxxxxxx') from dual;
    TO_NUMBER('00009CFD','XXXXXXXXXXXXXXXX')
                                       40189
    sql> select to_date('1900-01-01','yyyy-mm-dd') + 40189 from dual;
    TO_DATE('
    13-JAN-10So, the conversion would be something like this:
    sql> select to_date('1900-01-01','yyyy-mm-dd') + to_number(substr('00009CFD00000000',1,8), 'xxxxxxxx') + to_number(substr('00009CFD00000000',9,8), 'xxxxxxxx') / (24*60*60*1000) from dual;
    TO_DATE('
    13-JAN-10Note: Oracle DATE format specifies a datetime up to the second, whereas the sqlserver DATETIME format specifies a datetime up to the millisecond; if that precision is needed, use Oracle's TIMESTAMP instead.
    Note: using an internal representation is risky, implementation details may change. In this case, it seems pretty unlikely that Microsoft will ever change the datetime internal representation, since that would break lots and lots of code.
    Edited by: theoa on 2-jan-2012 9:14

  • Convert substring function from SQL Server to Oracle

    I am converting a large application written for SQL Server to Oracle and have encountered a difference in how the substring function is called between the two database systems.
    In SQL Server:
    select substring('xyz'1,2)
    In Oracle:
    select substr('xyz',1,2)
    Is there a way to establish a user-defined operator to map the substring call to a substr call so I don't have to change the application code?
    Is the user-defined function a way to do this?
    Which is better?

    If you want to be able to use the code that has substring in it, without modifying it, and have it do the same thing as substr, then try running the script below. It will create a user-defined function named substring that will cause substring to act like substr.
    CREATE OR REPLACE FUNCTION substring
    (p_string IN VARCHAR2,
    p_start IN VARCHAR2,
    p_end IN VARCHAR2 DEFAULT NULL)
    RETURN VARCHAR2
    IS
    v_string VARCHAR2 (100);
    BEGIN
    IF p_end IS NULL
    THEN
    SELECT SUBSTR (p_string, p_start)
    INTO v_string
    FROM DUAL;
    ELSE
    SELECT SUBSTR (p_string, p_start, p_end)
    INTO v_string
    FROM DUAL;
    END IF;
    RETURN v_string;
    END substring;
    null

  • Converter program for MS SQL Server to Oracle

    My problem with converting MS SQL Server queries in a SQL Pass-thru is becoming critical at my job.
    I am hoping there is an easy converter tool that will let a user take SQL Server statements and feed them into a converter that outputs Oracle SQL.
    Does such a program conversion tool exist?
    I bet not, right?

    Your bet is right as SQL-Server's SQL implementation is not the same as Oracle's SQL implementation. There are numerous differences. Translating one to the other is not a 1:1 keyword swap.
    And when these SQL statements involve locking and concurrency, there are also significant differences in core database functionality between SQL-Server and Oracle.
    What exactly is the problem you are facing? SQL-Passthru is specifically designed as a SQL interface that does not touch and change (and muck up) a SQL being passed to a remote database - so the actual raw SQL text being send is what arrives at the server end. Allowing you to, for example, use Oracle's SQL dialect inside SQL-Server to talk to a remote Oracle database - without SQL-Server throwing errors about Oracle dialect being used. Oracle has a similar passthru option.
    Why is this not working? Or is the issue something else?

  • Converting OLE Object in Sql Server to Oracle

    SQL Server contains datatype OLE Object. This is basically an array of binary floating point data where each value of the array is 4 byte long. How can I store these values in Oracle database.
    null

    You cannot specify the precision/scale or length of input paramters to a stored procedure in Oracle, or at least the pl/sql engine does not respect the sizing. Assuming that you want to do something with variable1 in the procedure, and not just return it, the Oracle equivalent would be something along the lines of:
    SQL> CREATE FUNCTION f (p_param1 IN VARCHAR2,
      2                     p_param2 IN NUMBER,
      3                     p_param3 IN NUMBER) RETURN NUMBER IS
      4     l_var1 NUMBER(20) := SUBSTR(p_param1, p_param2, p_param3);
      5  BEGIN
      6     RETURN l_var1 * 10;
      7  END;
      8  /
    Function created.
    SQL> SELECT f('ABC10DEF', 4, 2) FROM dual;
    F('ABC10DEF',4,2)
                  100You may need to adjust the return type to match what you are actually returning.
    You can also use this iin a direct assignment in pl/sql without doig a select, something like:
    SQL> DECLARE
      2     l_num NUMBER(20);
      3  BEGIN
      4     l_num := f('ABC10DEF', 4, 2);
      5     DBMS_OUTPUT.Put_Line('The number is: '||l_num);
      6  END;
      7  /
    The number is: 100John

  • DB LINK Oracle to SQL Server SQL Server TimeStamp converts to Oracle Date

    Hi All,
    I have created a DB link between Oracle 10g 10.2.0.5 to SQL server 2005 using Oracle 11g gateway. When I execute a query from Oracle that selects data from SQL server using the DBLINK then the column value of type Timestamp from SQL server gets converted to Date data type in Oracle and it losses the time value.
    Is there some way (in gateway configurations or in select query sql ) that the SQL server data type Timestamp gets converted to Oracle's Timestamp?
    Please help.
    Best Regards!
    Irfan
    Edited by: irf_mas on Mar 13, 2012 3:23 AM

    You're getting the ORA-2070 error as the gateway that you are using is not supporting the to_timestamp function in this context. You need to rewrite the code.
    Best would be if you first check out the data format that is sent as a string when you just select the date column - for example:
    data_create_dt
    Jan 11 2012 1:40PM
    Now the easiest way is to make sure the format you are using in your where clause matches the string from the SQL Server:
    select * from "data_ms_view"@FREETDS_DG4ODBC_EMGTW_11_2_0_3 where "data_create_dt"<'Jan 11 2012 1:41PM';
    which will result in:
    data_create_dt
    Jan 11 2012 1:40PM
    BTW,
    it works with all formats the SQL Server understands:
    SQL> select * from "data_ms_view"@FREETDS_DG4ODBC_EMGTW_11_2_0_3 where "data_create_dt">'11-JAN-12 01.40.00.000000000 AM';
    data_create_dt
    Jan 11 2012 1:40PM
    Another way using binds:
    SQL> variable datum varchar2(26);
    SQL> exec select to_char(systimestamp,'MON dd yyyy hh:mi') into :datum from dual;
    PL/SQL procedure successfully completed.
    SQL> print datum
    DATUM
    MAR 19 2012 08:29
    SQL> select * from "data_ms_view"@FREETDS_DG4ODBC_EMGTW_11_2_0_3 where "data_create_dt" <:datum;
    data_create_dt
    Jan 11 2012 1:40PM
    There are several ways to get a result, just make sure you don't use an unsupported function in your statement. A list of supported functions is found in the manual.

  • Want to convert function in SQL Server 2000

    Hi ,
    i am writing this function in oracle.Could you please convert this function in SQL Server 2000 because i am new in this and dont know how to use decode function in sql.
    Please following is the code for oracle.
    CREATE OR REPLACE function fun ( localex varchar2,titlex varchar2)
    return number
    as  x number;
    begin
    select sum ( decode (count (username),max(prereq_count),1,0) ) x into x from
       SELECT
                       prereq_count,
                       username
                 FROM
                         table1
    group by     username ;
    return x;
    end fun;
    Regards
    Vishal

    Just take a look example below might give you idea :
    create or replace function f_makeAddress_tx (
    i_address_tx VARCHAR2,
    i_city_tx VARCHAR2,
    i_state_tx VARCHAR2,
    i_zip_tx VARCHAR2)
    return VARCHAR2
    is
    e_badZip EXCEPTION; u279E8
    pragma EXCEPTION_init(e_badZip,-20998); u279E9
    v_out_tx VARCHAR2(256);
    begin
    p_validateZip (i_zip_tx); u279E12
    v_out_tx:= i_address_tx||u2019, u2018|| u279E13
    i_city_tx ||u2019, u2018||
    i_state_tx ||u2019, u2018||
    i_zip_tx;
    return v_out_tx; u279E17
    exception
    when e_badZip then u279E19
    return i_zip_tx || u2018: Invalid zip code.u2019;
    end;
    Regards,
    Clint

  • Error when insert data in Sql Server table(DateTime data type)

    Hello all,
    I have created a database link in oracle 11g to SQL Server 2008 using Sqlserver gateway for oracle,Oracle run on Linux and SQL Server run on Windows platform.
    I have queried a table and it fetches rows from the target table.
    I am using this syntax for insert a row in Sql Server table.
    Insert into Prod@sqlserver (NUMITEMCODE, NUMPREOPENSTOCK, NUMQNTY, NUMNEWOPENSTOCK, DATPRODDATE , TXTCOMPANYCODE, "bolstatus", NUMRESQNTY )
    Values (1118 , 1390.0 , 100.0 ,1490 , '2012-06-23 12:37:58.000','SFP' ,0 , 0 );
    but it give me error on DATPRODDATE,The data type of DATPRODDATE column in Sql Server is DATETIME.
    My Question is how can i pass the date values in INSERT statement for Sql Server DateTime data type.
    Regards

    Just as with Oracle, you have to specify the date using the to_date() function or use the native date format for the target database (if you can figure out what that is). This is good practice anyway and a good habit to get into.

Maybe you are looking for

  • Showing an image that is not on disc..

    Hi, I'm having the following problem: I have some images in a database, when client connects i have to show him a determinate set of pictures for that client. The problem is that first I must extract images from the database and put it on a file in t

  • Multi-touch pinch gesture

    hi, how to handle multi-touch gestures like pinches ? because its a problem if you hit first with the first finger or hit first with the other finger or you hit the display with both fingers at the same time.

  • Using applescript to run a whois from an ip address

    I need to be able to automatically look up IP addresses to get their location and registration information. I notice the network Utilities, which performs the function well manually, has no dictionary for apple script. Can anyone tell me if and how t

  • BW bookmark links to the portal.

    Hi,    Can we integrate BW bookmark links in Enterprise Portal? If possible, I would like to know the steps required for integrating BW bookmark links in the Portal? Thanks Hari Krishnan K

  • ProLiant DL380 Gen9 - NIC Teaming

    Hi community, since one week we have new DL380 Gen9 servers. Now we want to install them as a Win 2008 R2 server, but we cannot create a NIC teaming. If I install the HP NCO (Network Configuration Utility), cp023339.exe Version 10.90, I get "The soft