Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вытянуть дату из строки  [new]
Двоичник
Member

Откуда: Бобруйск
Сообщений: 328
Коллеги, помогите, пожалуйста, вытянуть дату из строки
на входе имею таблицу в поле строкового значения
with cte ( field )as (
select 'Decr_20140822_itog.txt' union 
select '20140902.txt' union 
select '17092014.txt' union 
select 'DB reestr 11.08.2014' union 
select 'Реестр от 04.09.2014 №1.csv' union 
select '1.xls' union 
select '7988-20140806.txt'
)
)

на выходе, нужно получить дату из этих самих значений
select * from (
select 
SUBSTRING(field,PATINDEX('%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%',field),8) as dt from cte
) t where IsDate(t.dt) = 1


помогите, пожалуйста, выбрать даты в другом формате, т.е. в идеале их нужно получить в общую выборку
и отсеять общий шлак типа '1.xls'
спасибо
17 сен 14, 12:38    [16585054]     Ответить | Цитировать Сообщить модератору
 Re: Вытянуть дату из строки  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37148
11.08.2014 - это 11 августа или 8 ноября?

А 20122010 - это какой год, день и месяц?

Бардак не автоматизируется, имхо.

Сообщение было отредактировано: 17 сен 14, 12:53
17 сен 14, 12:50    [16585107]     Ответить | Цитировать Сообщить модератору
 Re: Вытянуть дату из строки  [new]
Glory
Member

Откуда:
Сообщений: 104760
Двоичник
помогите, пожалуйста, выбрать даты в другом формате,

Ну так напишите CASE PATINDEX для всех форматов
17 сен 14, 12:55    [16585147]     Ответить | Цитировать Сообщить модератору
 Re: Вытянуть дату из строки  [new]
Двоичник
Member

Откуда: Бобруйск
Сообщений: 328
ГСА
11.08.2014 - это 11 августа или 8 ноября?

11 августа 2014

ГСА
А 20122010 - это какой год, день и месяц?

это где вы такое видите в моей выборке?

в моем случае даты только двух форматов, американский и русский
следовательно если не одно, то другое.
третьи случае нужно отсеять

я именно за помощью и обратился, а не обсудить возможности бардака. спасибо
17 сен 14, 12:56    [16585151]     Ответить | Цитировать Сообщить модератору
 Re: Вытянуть дату из строки  [new]
iap
Member

Откуда: Москва
Сообщений: 47050
Двоичник
это где вы такое видите в моей выборке?
'17092014.txt'
17 сен 14, 12:57    [16585160]     Ответить | Цитировать Сообщить модератору
 Re: Вытянуть дату из строки  [new]
Двоичник
Member

Откуда: Бобруйск
Сообщений: 328
'17092014.txt'
что вас здесь смущает?
17 сент 2014
17 сен 14, 12:58    [16585164]     Ответить | Цитировать Сообщить модератору
 Re: Вытянуть дату из строки  [new]
iap
Member

Откуда: Москва
Сообщений: 47050
Двоичник
'17092014.txt'
что вас здесь смущает?
17 сент 2014
14-ое число 20-го месяца 1709 года.
17 сен 14, 13:00    [16585169]     Ответить | Цитировать Сообщить модератору
 Re: Вытянуть дату из строки  [new]
Glory
Member

Откуда:
Сообщений: 104760
Двоичник
'17092014.txt'
что вас здесь смущает?
17 сент 2014

А это какой формат - американский или русский ?
17 сен 14, 13:01    [16585177]     Ответить | Цитировать Сообщить модератору
 Re: Вытянуть дату из строки  [new]
Двоичник
Member

Откуда: Бобруйск
Сообщений: 328
русский естественно
17 сен 14, 13:09    [16585223]     Ответить | Цитировать Сообщить модератору
 Re: Вытянуть дату из строки  [new]
Glory
Member

Откуда:
Сообщений: 104760
Двоичник
русский естественно

А 11.08.2014 тоже русский ?
17 сен 14, 13:10    [16585230]     Ответить | Цитировать Сообщить модератору
 Re: Вытянуть дату из строки  [new]
Двоичник
Member

Откуда: Бобруйск
Сообщений: 328
мы наращиваем счетчик сообщений?
да, это тоже русский
я не вижу разницы в масках

YYYY.MM.DD
YYYY-MM-DD
YYYY/MM/DD
YYYYMMDD
американский формат

DD-MM-YYYY
DDMMYYYY
DD.MM.YYYY
DD/MM/YYYY
это всё русские форматы. если вы меня хотите уличить в терминологии - то вам это удалось!
17 сен 14, 13:14    [16585238]     Ответить | Цитировать Сообщить модератору
 Re: Вытянуть дату из строки  [new]
iap
Member

Откуда: Москва
Сообщений: 47050
Двоичник
мы наращиваем счетчик сообщений?
да, это тоже русский
я не вижу разницы в масках

YYYY.MM.DD
YYYY-MM-DD
YYYY/MM/DD
YYYYMMDD
американский формат

DD-MM-YYYY
DDMMYYYY
DD.MM.YYYY
DD/MM/YYYY
это всё русские форматы. если вы меня хотите уличить в терминологии - то вам это удалось!
Чем отличаются YYYYMMDD от DDMMYYYY?
17 сен 14, 13:15    [16585250]     Ответить | Цитировать Сообщить модератору
 Re: Вытянуть дату из строки  [new]
Glory
Member

Откуда:
Сообщений: 104760
Двоичник
это всё русские форматы

А вы думаете, сервер тоже с вами согласится ?

Двоичник
мы наращиваем счетчик сообщений?

Ну да. Ответ уже дали, а все чего-то трепыхаетесь.
17 сен 14, 13:16    [16585257]     Ответить | Цитировать Сообщить модератору
 Re: Вытянуть дату из строки  [new]
Двоичник
Member

Откуда: Бобруйск
Сообщений: 328
мне требуется лишь на массив данных наложить маску YYYYMMDD
на оставшиеся наложить маску DDMMYYYY
все оставшееся шлак

я не знаю как преобразовать дату по маске,в этом то и вопрос.
первый этап я сделал, возникла проблема со вторым. именно потому я и пришел сюда, за помощью.
17 сен 14, 13:19    [16585272]     Ответить | Цитировать Сообщить модератору
 Re: Вытянуть дату из строки  [new]
Glory
Member

Откуда:
Сообщений: 104760
Двоичник
мне требуется лишь на массив данных наложить маску YYYYMMDD
на оставшиеся наложить маску DDMMYYYY

17091231 - это 31ое декабря 1709 года или 17ое сентября 1231 года ?
17 сен 14, 13:21    [16585284]     Ответить | Цитировать Сообщить модератору
 Re: Вытянуть дату из строки  [new]
iap
Member

Откуда: Москва
Сообщений: 47050
Двоичник
мне требуется лишь на массив данных наложить маску YYYYMMDD
на оставшиеся наложить маску DDMMYYYY
все оставшееся шлак

я не знаю как преобразовать дату по маске,в этом то и вопрос.
первый этап я сделал, возникла проблема со вторым. именно потому я и пришел сюда, за помощью.
Вы гуманитарий.
Это не лечится
17 сен 14, 13:22    [16585289]     Ответить | Цитировать Сообщить модератору
 Re: Вытянуть дату из строки  [new]
Glory
Member

Откуда:
Сообщений: 104760
Двоичник
я не знаю как преобразовать дату по маске,в этом то и вопрос

У вас не дата, у вас строка
http://msdn.microsoft.com/en-us/library/hh230993.aspx
17 сен 14, 13:23    [16585298]     Ответить | Цитировать Сообщить модератору
 Re: Вытянуть дату из строки  [new]
Двоичник
Member

Откуда: Бобруйск
Сообщений: 328
Glory
17091231 - это 31ое декабря 1709 года или 17ое сентября 1231 года ?

а это лечится?

во-первых, в моей выборке таких вариантов нет
во-вторых, вы разводите балаган, в то время, как я рассчитываю на помощь в решении
в-третьих, диагнозы ставить не ваша обязанность!

херней занимаетесь!
17 сен 14, 13:24    [16585314]     Ответить | Цитировать Сообщить модератору
 Re: Вытянуть дату из строки  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37148
Модератор: И правда, зачем мы тут херней всякой занимаемся?
До свиданья.
17 сен 14, 13:27    [16585333]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить