sql - تحويل الطابع الزمني تيراداتا(6) إلى داتيتيم ل سكل سيرفر




sql-server ssis (3)

إذا mydate هو الطابع الزمني، فقط يلقي عليه:

select column1,
       cast(mydate as datetime) as column2
from MyTable

حسنا، حتى التنفيذ في تيراداتا يعني أنك لم يكن لديك داتيتيم ... ولكن لديك التاريخ والوقت:

select column1,
       cast(mydate as date) as column2date,
       cast(mydate as time) as column2time
from MyTable

يمكنك بعد ذلك استخدام سيس لمعالجة البيانات لدمج التاريخ والوقت في داتيتيم مسكل

أنا أعمل على تصدير البيانات من سسيس، ولدي خطأ اقتطاع في واحدة من مشروعي:

[TH27 [91]] خطأ: "حدث خطأ في اقتطاع اسم العمود هو" ميديت ".

في الإدخال (تيراداتا)، لدي عمود من نوع timestamp(6) ، وفي الإخراج في سكل سيرفر، لدي عمود من نوع datetime .

كيف يمكنني تحويله في الطريقة التي عند استخدام سسيس أنا لا تحصل على هذا النوع من الخطأ؟

محاولتي (الطلب 1):

SELECT 
    column1,
    CAST(CAST(CAST(mydate AS DATE FORMAT 'YYYY-MM-DD') AS CHAR(10)) || ' ' 
             || TRIM(EXTRACT(HOUR FROM (mydate))) || ':'
             || TRIM(EXTRACT(MINUTE FROM (mydate))) || ':'
             || TRIM(CAST(EXTRACT(SECOND FROM (mydate)) AS INTEGER)) AS Date) AS mydate,
    column2
FROM table1

تحديث:

كان الطلب الذي كتبته في مصدر تيراداتا هنا مثالا على مخطط سسيس الخاص بي


ربما لأن سكل سيرفر لا يدعم 6 أرقام كسرية، لذلك يلقي بها إلى سلسلة مع 3 أرقام كسرية على تيراداتا:

To_Char(myDate,'yyyy-mm-dd hh:mi:ss.ff3')

لقد وجدت هذا الحل، أن العمل بالنسبة لي في SSIS هو إزالة الجزء الأخير الذي لدينا في timestamp(6) وتحويله بعد ذلك في timestamp(0) .

select column1,
       CAST(SUBSTRING(CAST(mydate AS CHAR(26)) FROM 1 FOR 19) AS TIMESTAMP(0))
       as mydate 
from MyTable




teradata