![]() |
![]() |
![]() |
|
Дата и sqlite | ☑ | ||
---|---|---|---|---|
0
Maka
30.11.10
✎
10:43
|
День добрый! Подскажите как реализовать подобное: есть дата документа в формате "YYYYMMDD", при добавлении к ней определенного количества дней получается что-то типа "5032-11-14". Как ее преобразовать в удобоваримый формат?
|
|||
1
Мулька
30.11.10
✎
10:44
|
Как добавляешь?
|
|||
2
1C-Nick
30.11.10
✎
10:44
|
а чем 5032-11-14 неудобоворимый?
как должно быть? |
|||
3
Maka
30.11.10
✎
10:45
|
date(Ж.date,'+5 days')
|
|||
4
smaharbA
30.11.10
✎
10:45
|
может преобразовать в дату, добавить и обратно в исо ?
|
|||
5
Maka
30.11.10
✎
10:46
|
(2) как его обратно в понятный 1с перевести?
|
|||
6
smaharbA
30.11.10
✎
10:46
|
5032-11-14
ты из будущего ? |
|||
7
Maka
30.11.10
✎
10:48
|
(6) если бы... К этой дате "20101105" прибавляю 5 дней и получается вот так.
|
|||
8
Maka
30.11.10
✎
10:52
|
SQLIte Подскажите по date(Рег.PERIOD,'start of month')
Здесь у человека была подобная проблема... Может кто в курсе.. |
|||
9
DrZombi
гуру
30.11.10
✎
10:54
|
(8)Зачем тебе двигать документ?
Ты еще про время забыл :) Как тебе уже сказали в (4) преобразовать в тип DateTime и обратно. |
|||
10
Жан Пердежон
30.11.10
✎
10:58
|
(7) значит ты прибавляешься через ж*пу
|
|||
11
Maka
30.11.10
✎
11:01
|
(9),(10) Можно пример, как это делается?
|
|||
12
Кирпич
30.11.10
✎
11:07
|
Здеся читать надо
http://www.sqlite.org/lang_datefunc.html |
|||
13
orefkov
30.11.10
✎
11:17
|
sqlite не понимает дату в формате YYYYMMDD, только в YYYY-MM-DD
Так что сначала строку с датой преобразуй к нужному формату, потом прибавляй, потом обратно преобразуй в YYYYMMDD. |
|||
14
orefkov
30.11.10
✎
11:19
|
+(13)
Что-то типа replace(date(substr(Ж.date, 1, 4) || '-' || substr(Ж.date, 5, 2) || '-' || substr(Ж.date, 7, 2),'+5 days'), '-', '') |
|||
15
Ёпрст
гуру
30.11.10
✎
11:23
|
+13 тип того:
ТекстЗапроса=" |Select | replace(date(substr(:КонПериод,1,4)||'-'||substr(:КонПериод,5,2)||'-'||substr(:КонПериод,7,2),'+5 days'),'-','') [d :Дата] |"; Запрос.Подставлять("КонПериод",ТекущаяДата()); |
|||
16
orefkov
30.11.10
✎
11:28
|
+(14)
Проверил, работает select ж.date [Д1 :Дата], replace(date(substr(Ж.date, 1, 4) || '-' || substr(Ж.date, 5, 2) || '-' || substr(Ж.date, 7, 2),'+5 days'), '-', '') [Д2 :Дата] from [Журнал] Ж limit 10 Мож сделать встроенную функцию для таких конвертаций? |
|||
17
orefkov
30.11.10
✎
11:30
|
О, лучше sqlite допилить, чтобы понимал гад такие даты.
|
|||
18
smaharbA
30.11.10
✎
11:32
|
ага
|
|||
19
smaharbA
30.11.10
✎
11:33
|
(17) можно свои функции в него впиндюривать
|
|||
20
smaharbA
30.11.10
✎
11:33
|
но дело в пункте 12
A time string can be in any of the following formats: 1. YYYY-MM-DD 2. YYYY-MM-DD HH:MM 3. YYYY-MM-DD HH:MM:SS 4. YYYY-MM-DD HH:MM:SS.SSS 5. YYYY-MM-DDTHH:MM 6. YYYY-MM-DDTHH:MM:SS 7. YYYY-MM-DDTHH:MM:SS.SSS 8. HH:MM 9. HH:MM:SS 10. HH:MM:SS.SSS 11. now 12. DDDDDDDDDD |
|||
21
Maka
30.11.10
✎
11:36
|
(14),(15) Спасибо большое, получилось!
|
|||
22
orefkov
30.11.10
✎
12:30
|
Таки доработал я 1sqlite до понимания дат из 1С.
то бишь date(Ж.date,'+5 days') работает сразу. Надо выкладывать на тест? |
|||
23
Ёпрст
гуру
30.11.10
✎
12:31
|
(22) надо!
|
|||
24
Ёпрст
гуру
30.11.10
✎
12:32
|
+23 возвращать в каком формате будет ?
yyyymmdd ? |
|||
25
orefkov
30.11.10
✎
12:39
|
(24)
Естественно. Вобщем, доработал функцию date. Если на вход поступает строка длиной 8 символов, то в нее вставляются '-' в нужных местах (приводится к формату YYYY-MM-DD) и при возврате они убираются. В остальных случаях все работает как раньше. http://www.1cpp.ru/forum/YaBB.pl?num=1214205575/600#601 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |