Преобразование текстового поля типа данных в DateTime - PullRequest
0 голосов
/ 22 сентября 2010

Я использую SQL Server 2000, и мой поставщик ERP использовал поле типа данных Text для хранения дат.

Даты выглядят так:

6/21/2001 год

Однако некоторые из них не заполнены.

Я пытался использовать что-то вроде:

select coalesce(nullif(fdelivery, ''), '1/1/1900') FROM sorels 

убрать пробелы безрезультатно.

Я также пробовал:

case 
        when ltrim(rtrim(SOR.fdelivery)) = ''

убрать пробелы безрезультатно.

Даже если я могу заменить пробелы чем-то, похожим на дату, как я могу преобразовать или преобразовать поле в datetime (из текста), чтобы моя программа отчетов знала, что это на самом деле поле даты, а не текст ,

Ответы [ 2 ]

1 голос
/ 22 сентября 2010

Ах, я нашел метод:

select 
Case
when isdate(SUBSTRING(fdelivery, 1,11)) = 1
then cast(SUBSTRING(fdelivery, 1,11) as datetime)
else cast('1/1/1900' as datetime)
end
as DateConvert
from sorels

Это будет работать.Он подстрокует «часть» даты текстового поля, которое, я думаю, неявно преобразует его в тип данных Char, а затем я могу преобразовать его в дату и время.

0 голосов
/ 22 сентября 2010

Прошло много времени с тех пор, как я использовал SQL Server 2000, но если функция ISDATE доступна, вы можете использовать ее так:

...