|
Сравнение даты и времени | ☑ | ||
---|---|---|---|---|
0
Novicadmin
04.01.13
✎
11:24
|
Ребята не нашел необходимого ответа, парюсь.
Есть на форме реквизит тип дата отображение время без даты. Так вот как выбрать строки из интервала 12.12.2012 23:00:00 по 13.12.2012 8:00:00 в каждой строке есть полная дата со временем, а интервал времени указываем на форме с 23:00:00 до 8:00:00. пытался сравнивать строки через ФОрмат(дата,"ДЛФ=В"), че то хрень какая то получается. давайте придумаем способ или если есть поделитесь пожалуйста. может есть варики запросом сравнить в таблице в которой в каждой строке есть полная дата+время. спасибо. |
|||
1
Бледно Золотистый
04.01.13
✎
11:36
|
Откуда взяли именно этот день 12.12.2012?
|
|||
2
Novicadmin
04.01.13
✎
12:09
|
этот день для примера, а вообще это в документе в каждой строке есть полная дата+время
|
|||
3
hhhh
04.01.13
✎
12:16
|
(2) ну как-то НачалоДня(Строка.Дата) + (НачДата - ПустаяДата)
получаете начало интервала, но уже в рамках 12.12.12. Дальше уже элементарное сравнение. |
|||
4
Novicadmin
04.01.13
✎
12:37
|
мне нужна выборка во времени а не в датах создать условие при ктором будет выборка проходить в интервали времени т.е. ГЛАВНОЕ это сравниь время
|
|||
5
Novicadmin
04.01.13
✎
12:56
|
представьте что на форме есть 2 поля с типом дата, вариант отображения Время(если визуально то с 23:00:00 до 8:00:00) т.е. пользователь может ввести туда только время без даты. нам необходимо выбрать в документе строки в которых в колонке Время выбираемое значение будет в интервале от 12.12.2012 23:00:00 до 13.12.2012 8:00:00 (значения в документе это как полная дата+время может иметь любое значение к примеру первая строка в документе это 12.12.2012 8:00:45, а последняя строка это 13.12.2012 7:45:32). вот нам и надо получить строки сравнивая дату в строке со временем указанным на форме. че тоя много написал но думаю доходчево.
|
|||
6
Novicadmin
04.01.13
✎
13:02
|
как пример сравнения в виде кода это будет так:
Пока какаятовыборка цикл Если (какаятовыборка.вермя >= Время1) и (какаятовыборка.вермя <= Время2) тогда ............. ........... КонецЕсли; КонецЦикла; но это не имеет смысла потому что через отладчик мы видим такую вот картину как Если 12.12.2012 8:45:32 >= 01.01.0001 23:00:00 и т.д. ))) |
|||
7
Novicadmin
04.01.13
✎
13:06
|
в результате надо сравнить только время т.е. 8:45:32 и 23:00:00, но я не представляю как (
|
|||
8
Lama12
04.01.13
✎
13:09
|
(7) Так все написал в (6). Только добавь условие на дату и все. Если правильно понял, сравнение времени должно идти в пределах одного дня?
Если нет, то отнимай от даты начало дня. Время приведи к количеству секунд. Все. |
|||
9
Novicadmin
04.01.13
✎
15:13
|
дык я и не понимаю как, слабенько 8ку знаю, вот и парюсь мне бы конкретный пример чтобы я понял и запомнил
|
|||
10
Novicadmin
04.01.13
✎
15:16
|
Если (ВремяСтроки >= (НачалоДня(ВремяСтроки)) И ВремяСтроки <= (НачалоДня(ВремяСтроки)+60*60*8 )) или (ВремяСтроки >= НачалоДня(ВремяСтроки)+60*60*23 И ВремяСтроки <= (НачалоДня(ВремяСтроки)+60*60*24))Тогда
СтрокаТЗ= ТЗ.Добавить(); СтрокаТЗ.Товар = Товар; СтрокаТЗ.КолВо = КолВо; СтрокаТЗ.Сумма = Сумма; Если найти(Товар,СокрЛП(ЕстьСтрока))>0 или найти(Товар,СокрЛП(ЕстьСтрока2))>0 или найти(Товар,СокрЛП(ЕстьСтрока3))>0 тогда СтрокаТЗ.Алко = "1"; иначе СтрокаТЗ.Алко = "0"; КонецЕсли; КонецЕсли; |
|||
11
Novicadmin
04.01.13
✎
15:16
|
вот так работает
но это кодом, а мне надо чтобы значения были с формы |
|||
12
GROOVY
04.01.13
✎
15:19
|
(11) Вот эта фраза меня в ступор ввела...
|
|||
13
Novicadmin
04.01.13
✎
15:21
|
может я неправильно изъясняюсь х.з ) я просто больше чем уверен что можно как то преобразавать значения переменных во время и сравнивать только время, но х.з как это сделать
|
|||
14
GROOVY
04.01.13
✎
15:22
|
(13) Такого типа как "Время" нет. Можно, как уже сказали выше, получить кол секунд с начала дня для обеих значений и сравнивать их.
|
|||
15
Novicadmin
04.01.13
✎
15:24
|
как это сделать нарисуй, покажи пример плиз
|
|||
16
1Сергей
04.01.13
✎
15:26
|
(15) купи у меня СП? недорого отдам
|
|||
17
GROOVY
04.01.13
✎
15:27
|
Время1 = Дата1 - НачалоДня(Дата1);
Время2 = Дата2 - НачалоДня(Дата2); |
|||
18
ДенисЧ
04.01.13
✎
15:31
|
(14) Как нет? А дата с параметром ЧастиДаты.Время?
|
|||
19
GROOVY
04.01.13
✎
15:34
|
(18) Это дата. Вида 01.01.0001 13:00:00 к примеру.
|
|||
20
Xatori
04.01.13
✎
16:34
|
Может действительно стоит приводить все даты к 01.01.0001 и сравнивать только время
|
|||
21
GROOVY
04.01.13
✎
17:02
|
(20) А смысл? К числу то проще. Да и сравнение дат по факту это и есть сравнение числа секунд от даты Х.
|
|||
22
Novicadmin
09.01.13
✎
15:21
|
Функция ВозвратВремениНачала(Дата)
//время на форме нужнаяДата1 = ФОрмат(Дата, "ДЛФ=T"); //дата из строки НужнаяДата2 = Формат(ВремяСтроки,"ДЛФ=D"); ИтоговаяДата = НужнаяДата2+" "+нужнаяДата1; ИтоговаяДата = Дата(ИтоговаяДата); Возврат ИтоговаяДата; КонецФункции две функции для возврата даты, просто приравниваю дату времени к дате строки, но в итоге тогда нельзя сравнить разные даты т.е. нельзя выбрать в интервале с 23:00:00 одного одня до 8:00:00 другого дня, как??? может есть мысли? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |