2016-02-05 4 views
0

мне нужно преобразовать VARCHAR в TIMESTAMPКак передать VARCHAR в TIMESTAMP?

Это работает только тогда, когда месяц имеет две цифры

SEL CAST('12/25/1994 11:46:29 PM' AS TIMESTAMP(0) FORMAT 'mm-DD-YYYYBhh:mi:ssBt') 

Однако, когда месяц имеет одну цифру это не удается

SEL CAST('1/2/1994 11:46:29 PM' AS TIMESTAMP(0) FORMAT 'mm-DD-YYYYBhh:mi:ssBt')  

Как отчитываться месяц с одной цифрой?

+0

Вы пробовали изменить строку формата? например, '' m-DD -YYYYBhh: mi: ssBt'' – mhawke

ответ

1

Во-первых, ваша дата имеет / в качестве разделителя, но вы используете - в своем CAST формате. Однако это не ваша главная проблема.

По-видимому, форматы Teradata CAST работают только с двухзначными месяцами и днями, если вы уверены, что ваши данные хорошо отформатированы, и это единственная проблема, которая у вас есть, вы можете попробовать что-то вроде этого.

SELECT 
    '1/2/1994 11:46:29 PM' AS YourDate, 
    CAST(CASE 
     WHEN YourDate LIKE '_/_/%' THEN '0' || SUBSTRING(YourDate FROM 1 FOR 2) || '0' || SUBSTRING(YourDate FROM 3) 
     WHEN YourDate LIKE '_/__/%' THEN '0' || YourDate 
     ELSE YourDate 
    END AS TIMESTAMP(0) FORMAT 'mm/dd/YYYYBhh:mi:ssBt') 

Другой альтернативой является функция TO_TIMESTAMP. Он допускает однозначные дни, но не однозначные месяцы.

Смежные вопросы