Имя: Пароль:
1C
1С v8
Преобразование строки в дату
,
0 DeMi4
 
24.11.11
10:39
Есть строка вида 2011-08-11 как ее можно преобразовать в дату
1 Wobland
 
24.11.11
10:40
разобрать на части и скормить Дате()
2 Stim213
 
24.11.11
10:40
парсинг
3 YF
 
24.11.11
10:40
Убрать "-" и натравить Дата()
4 Wobland
 
24.11.11
10:40
а, может, Дата() и так справится, а?
5 DeMi4
 
24.11.11
10:47
Не не справится надо бить
6 Sniper9mm
 
24.11.11
10:54
ну можешь так поробывать на примере 11.08.2011

Дата(Сред(ИзмДата,7,4)+Сред(ИзмДата,4,2)+Сред(ИзмДата,0,2));
7 Кокос
 
24.11.11
10:56
"000000" еще надо приделать :)
8 el-gamberro
 
24.11.11
10:58
(1 - 7) А в запросе? :)
9 DeMi4
 
24.11.11
10:59
ДатаСтр=Прав(ДатаФ,2)+"."+Сред(ДатаФ,6,2)+"."+Лев(ДатаФ,4);
       Объект.Дата=Дата(ДатаСтр);
Сделал так
10 Кокос
 
24.11.11
11:00
(9) работает?
11 Sniper9mm
 
24.11.11
11:02
(10) "000000" Не обязательно
12 DeMi4
 
24.11.11
11:03
ДатаСтр=Прав(ДатаФ,2)+"."+Сред(ДатаФ,6,2)+"."+Лев(ДатаФ,4)+" "+"00:00:00";
       Объект.Дата=Дата(ДатаСтр);
13 DeMi4
 
24.11.11
11:03
Во так работает!
14 salvator
 
24.11.11
11:04
(9) Проще Дата(СтрЗаменить(ДатаФ,"-","")+"000000");
15 Wobland
 
24.11.11
11:05
да что вы прицепились к 000000? и без него всё хорошо
16 Кокос
 
24.11.11
11:05
вообще странно. я всегда привожу к "ГГГГММДДЧЧММСС" и функция работает. Причем в УТ10 также преобразуют. тамже собственно и научился. фигли еще чет гадать?
17 salvator
 
24.11.11
11:05
Тем более проще
18 andrewks
 
24.11.11
17:58
(8) лови! и не говори, что медленно работает :)


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"

;

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

;

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

;


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)
index by year

;

select
dateadd(dateadd(dateadd(datetime(1,1,1),day,days.day-1),month,months.month-1),year,years.year-1) as Дата
from
years
,months
,days
where (years.yearstr+"-"+months.monthstr+"-"+days.daystr=&Дата1)
19 Кокос
 
25.11.11
10:43
(18) извращенец :)
20 Поручик
 
25.11.11
11:01
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс