SQL Server: проблема с преобразованием даты? - PullRequest
0 голосов
/ 20 мая 2011

У меня есть столбец, в котором значения даты хранятся в varchar (в формате ddmmyy), например:

231280
121280
131185
...

Как преобразовать эти значения в тип данных datetime?

Ответы [ 4 ]

1 голос
/ 20 мая 2011
Set DateFormat DMY
GO
Select Cast(Stuff(Stuff(SomeValue, 3, 0, '-'), 6, 0, '-') As datetime)
From MyData
1 голос
/ 20 мая 2011

Используйте подстроку, чтобы получить год, месяц и день, если год больше 11, добавить 19 к нему, если не добавить 20, чтобы получить год в формате 2009, но это ваш запрос, просто вместо строки добавьте имя столбца

 select CAST(
            CASE WHEN CAST(SUBSTRING('231280', 5, 2) AS INT) >11
                    THEN '19'+SUBSTRING('231280', 5, 2) 
                    else '20'+SUBSTRING('231280', 5, 2) 
                END 
        +'-'+SUBSTRING('231280', 3, 2)+'-'+SUBSTRING('231280', 1, 2) as datetime)
1 голос
/ 20 мая 2011

Вы должны использовать некоторую подстроку для преобразования вашей строки в известный формат даты .Вот пример преобразования строки в формат 3 «британский / французский»:

declare @YourTable table (YourColumn varchar(50))
insert @YourTable
          select '231280'
union all select '121280'
union all select '131185'

select  convert(datetime, substring(YourColumn,1,2) + '/' + 
    substring(YourColumn,3,2) + '/' + substring(YourColumn,5,2), 3)
from    @YourTable
1 голос
/ 20 мая 2011

Поскольку этот формат нестандартный, используйте

DECLARE @field char(6)
SET @field = '231280'
select convert(datetime, right(@field, 2) +   substring(@field, 3, 2) + left(@field, 2)  , 12)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...