|
Преобразование строки в дату в запросе | ☑ | ||
---|---|---|---|---|
0
radiks
30.11.11
✎
19:24
|
Подскажите как преобразовать в запросе строку вида "20111005ПРТТ" преобразовать в дату?
|
|||
1
МихаилМ
30.11.11
✎
19:26
|
||||
2
aleks-id
30.11.11
✎
19:27
|
стандартно спрошу - а зачем?
|
|||
3
radiks
30.11.11
✎
20:07
|
(2? В общем нужно из внешнего источника затянуть данные в заданном интервале дат. Дата там в таком формате. Т.е. чтобы не тянуть за весь период данные из внешнего источника, нужно отобрать в запросе.
|
|||
4
radiks
30.11.11
✎
20:08
|
(1) Не то.
|
|||
5
Aleksey
30.11.11
✎
20:09
|
(3) Дата в нормальном виде, осталось период преобразовать в строку и сравнивать строки. Необязательно входящие данные преобразовывать
|
|||
6
aleks-id
30.11.11
✎
20:09
|
ну и тяни по этим условиям. такой формат позволяет сравнивать на больше-меньше
|
|||
7
radiks
30.11.11
✎
20:18
|
а как все-таки отсечь текст и оставшееся сравнить?
я попытался ВЫРАЗИТЬ(ПОДСТРОКА(..., 0, 8) КАК Дата) - ошибка |
|||
8
PR
30.11.11
✎
20:20
|
В запросе нельзя преобразовать строку в дату.
ВЫРАЗИТЬ - это приведение к типу. |
|||
9
Aleksey
30.11.11
✎
20:20
|
(7) А зачем отсекать. 000 гарантированно больше чем буква
т.е. 201110050000<20111005ПРТТ<201110060000 |
|||
10
Armando
30.11.11
✎
20:21
|
Через ДАТАВРЕМЯ и ПОДСТРОКА не?
|
|||
11
PR
30.11.11
✎
20:22
|
(10) Что через ДАТАВРЕМЯ?
|
|||
12
radiks
30.11.11
✎
20:29
|
(10) пробовал - нет
|
|||
13
Живой Ископаемый
30.11.11
✎
20:31
|
2(10,12) до вас пробовали over 9000 и писали об этом...
|
|||
14
andrewks
30.11.11
✎
20:31
|
можно, через временную таблицу. только верно было замечено - нахненадо
|
|||
15
radiks
30.11.11
✎
20:42
|
(14) нужно именно в запросе. Понятно, что можно затянуть все и потом обычным Формат, но нужно в запросе
|
|||
16
Vakhrin
30.11.11
✎
20:42
|
ответ в (6)
|
|||
17
radiks
30.11.11
✎
20:43
|
(16) понятно, если других вариантов нет, тогда остановлюсь на этом.
всем спасибо |
|||
18
andrewks
30.11.11
✎
21:02
|
(15) я про запрос и говорю
|
|||
19
andrewks
30.11.11
✎
21:52
|
(17) вот другой вариант:
select 0 as num ,"0" as numstr into digits union select 1,"1" union select 2,"2" union select 3,"3" union select 4,"4" union select 5,"5" union select 6,"6" union select 7,"7" union select 8,"8" union select 9,"9" index by num,numstr ; select digits1.num+10*digits2.num as day ,digits2.numstr+digits1.numstr as daystr into days from digits as digits1 ,digits as digits2 where (digits1.num+10*digits2.num between 1 and 31) index by day,daystr ; select digits1.num+10*digits2.num as month ,digits2.numstr+digits1.numstr as monthstr into months from digits as digits1 ,digits as digits2 where (digits1.num+10*digits2.num between 1 and 12) index by month,monthstr ; select digits1.num+10*digits2.num+100*digits3.num+1000*digits4.num as year ,digits4.numstr+digits3.numstr+digits2.numstr+digits1.numstr as yearstr into years from digits as digits1 ,digits as digits2 ,digits as digits3 ,digits as digits4 //where (digits1.num+10*digits2.num+100*digits3.num+1000*digits4.num between 1 and 3999) where (digits1.num+10*digits2.num+100*digits3.num+1000*digits4.num between 2000 and 2020) index by year,yearstr ; select dateadd(dateadd(dateadd(datetime(1,1,1),day,days.day-1),month,months.month-1),year,years.year-1) as Дата, years.yearstr+months.monthstr+days.daystr as ДатаСтрокой from years ,months ,days order by Дата генерация таблицы дат и их текстовых представлений. можешь её пихать прямо в запросе в ВТ, и использовать соединение с ней |
|||
20
Aleksey
30.11.11
✎
21:58
|
(17) Чукча не читатель?
|
|||
21
radiks
01.12.11
✎
10:44
|
(19) О, попробуем )))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |