|
вывод даты как число | ☑ | ||
---|---|---|---|---|
0
moonlight
07.08.16
✎
00:24
|
Как вывести значения типа даты например 06.08.2016 23:00:05 в 20160806230005 ? Можно ли это получить встроенными средствами 1с или надо писать свою функцию?
|
|||
1
Zhuravlik
07.08.16
✎
00:26
|
(0) Курить функцию Формат
|
|||
2
Aleksey
07.08.16
✎
01:30
|
ДФ=yyyyMMddHHmmss
|
|||
3
Aleksey
07.08.16
✎
01:36
|
ТвояДата - 06.08.2016 23:00:05;
ДатаКакЧисло = Число("20"+Прав(Год(ТвояДата),2) + Прав("0"+Месяц(ТвояДата,2) + Прав("0"+День(ТвояДата),2) + Прав("0"+Час(ТвояДата),2) + Прав("0"+Минута(ТвояДата),2) + Прав("0"+Секунда(ТвояДата),2)); |
|||
4
b_ru
07.08.16
✎
09:06
|
(3) Вон из профессии! ©
|
|||
5
Aleksey
07.08.16
✎
09:58
|
(4) Что не так? Встроенными средствами, без запросов в цикле и перейти.
Какой именной феншуй нарушает этот код? |
|||
6
echo77
07.08.16
✎
10:19
|
(5) Вы же сами писали раньше ДФ=yyyyMMddHHmmss
Соответственно: ДатаКакЧисло = Число(Формат(Дата,"ДФ=yyyyMMddHHmmss")) |
|||
7
Vaflya
07.08.16
✎
11:23
|
(4) это ко всем отписавшимся в топике
что за чушь это такая - дата как число, дата это дата, число это число, вертолет тоже не кирпич. Зачем это нужно, могу предположить, что ТС хочет прибавить к дате пару дней или недель, а с датами обращаться не умеет |
|||
8
Vaflya
07.08.16
✎
11:24
|
(0) куда вывести?
|
|||
9
Aleksey
07.08.16
✎
12:36
|
(7) Например для сортировки, или для выгрузки в текстовый файл, где нет формата "дата"
|
|||
10
Vaflya
07.08.16
✎
12:40
|
(9)
я думал, что дата сортируется не хуже чем число, похоже что это не так. я думал, что в текстовом файле нет формата "число", похоже что это не так. Все не так, как я думал. |
|||
11
Зая Бусечка
07.08.16
✎
12:46
|
(10) Дата сортируется прекрасно. В текстовом файле вообще нет числа и чего-то подобного. Там только буквы.
|
|||
12
Aleksey
07.08.16
✎
12:49
|
(11) дата или дата + время? А если нам эту инфу в 7.7 надо передать, где в дате нет времени?
|
|||
13
Vaflya
07.08.16
✎
12:53
|
(12) да, тогда мы загоним туда число) гм.. лол
|
|||
14
Aleksey
07.08.16
✎
12:53
|
Например у меня хранилась во внешним dbf файле некие данные. (дата+время изменений) и нужно было запросом выбирать все данные измененные от времени последнего обмена. Самое простое это хранить именно в формате "20160806230005". И тогда запросом по одному полю легко можно получить нужные данные
|
|||
15
Aleksey
07.08.16
✎
12:54
|
(13) И что?
|
|||
16
Vaflya
07.08.16
✎
13:02
|
(14) "20160806230005" - это строка что ли?
но даже если это число, то самое простое это написать запрос с отбором по дате, а не городить преобразование в число в дополнительной колонке |
|||
17
Vaflya
07.08.16
✎
13:07
|
там в соседней ветке человек решает муки выбора - где ему начать работать во франче или в гос структуре, теперь точно уверен, что идти надо туда, где дадут спокойно добавить новую числовую колонку и писать туда числовой вариант даты, что бы потом "оптимально" запросы делать, затем понять, что это никому не нужно и сделать по-человечески. клиент, с которым у тебя коммерческие отношения, ждать пока ты это все сделаешь не будет
|
|||
18
Aleksey
07.08.16
✎
13:08
|
(16) а если нужно время? Например обмен идет каждый час и хотелось бы выгружать не всю инфу за день, а именно со временем последнего обмена
|
|||
19
Aleksey
07.08.16
✎
13:09
|
(17) То что лично тебе в данный момент это не нужно, не означает что и всем это не надо
|
|||
20
Aleksey
07.08.16
✎
13:15
|
(17) Расскажи как по человечески
Есть некая база куда загружаются данные. Есть клиенты которые выбирают эти данные. Причем количество клиентов заранее не известно. В моем случае я писал в базу данные и дата+время загрузки данных. А у клиентов у меня была дата+время последней выгрузки. Соответственно если клиент последний раз обменивался месяц назад, он получит измененные за месяц данные. Если клиент обменивался полчаса назад - то он получить только измененные за последние полчаса, а не все данные А теперь расскажи как по человечески, при условии что в базе нет типа Дата+время. |
|||
21
Vaflya
07.08.16
✎
13:17
|
топик про восьмерку
время в 7 насколько понимаю есть (с 7 только через скл общался), но наверно хранится в соседней колонке, поставить где дата = и время =, >, <. |
|||
22
Aleksey
07.08.16
✎
13:20
|
(21) "Дата = " ты серьезно?
|
|||
23
Vaflya
07.08.16
✎
13:22
|
а что такое, с синтаксисом не угадал ?
|
|||
24
Aleksey
07.08.16
✎
13:24
|
Дата последней загрузки 06.08.2016 07:25:45.
Клиент последний раз обменивался 05.08.2016 10:00:00 Мне нужно выбрать Все изменения с даты последнего обмена Как мне составить запрос на поле дата и времени? |
|||
25
Aleksey
07.08.16
✎
13:25
|
Если я напишу
Дата = 05.08.2016 и время > 10:00:00 то сюда не попадут изменения от 06.08.16 |
|||
26
Aleksey
07.08.16
✎
13:27
|
Если я напишу Дата >= 05.08.2016 и время >= 10:00:00
То сюда не попадут изменения от 06.08.2016 07:25:45, так как 07:25:45 < 10:00:00 |
|||
27
Aleksey
07.08.16
✎
13:28
|
Забить на дату? Тогда будет повторно выгружаться данные с 0:00:00 по 10:00:00. А нам этого не нужно, нам нужно именно измененные с последнего обмена, а не все данные за день
|
|||
28
Aleksey
07.08.16
✎
13:28
|
*Забить на дату? = Забить на время?
|
|||
29
Web00001
07.08.16
✎
13:30
|
(7)(10)Понт засчитан
https://i.viewy.ru/data/photo/05/44/05445f2826GNPLJNH_95062_badb5d6fec.gif |
|||
30
Aleksey
07.08.16
✎
13:32
|
В моем случае
Дата последней загрузки 20160806072545 Клиент последний раз обменивался 20160805100000 Соответственно в запросе я выбираю записи > "20160805100000" (а уж число или дата не принципиально) И получаю все данные измененные с 05.08.2016 10:00:00, т.е. ровно то что нужно. Останется в дату последнего обмена записать новую дату+время |
|||
31
Vaflya
07.08.16
✎
13:47
|
смотря средствами чего грузить, что доступно? convert? сложить два поля, получить дату со временем и сравнивать. в любом случае придумать можно
(29) да да, подкол тоже |
|||
32
Aleksey
07.08.16
✎
13:56
|
(31) а в чем прикол хранить 2 поля, каждый раз делать конверт по всей таблице, вместо того чтобы использовать 1 поле с индексом? Это и есть писать по человечески?
|
|||
33
Vaflya
07.08.16
✎
14:47
|
спорить о том, что происходит в чужой базе не хочется, я почему то подумал, что это документы, у них дата и время есть, в (14) так и написано, что колонки уже есть, если это произвольная таблица и то как записи в ней появляются описываешь сам, то вобще никаких проблем быть не должно, сам написал, сам прочитал. в данном случае число играет роль некоторого счетчика, который получен от текущей даты, что может привести к косякам, если например на машине, на которой формируется этот счетчик, будет стоять неправильное системное время или у клиента что со временем. простой порядковый номер записи. А использовать числа, образованные от даты в качестве именно чисел хз что это. Топик про 8 и в примере дата со времен идет (в моем понимании дата это традиционная дата из платформы 8), каким таким образом мы перешли к решению проблем в твоей семерошной базе тоже не понятно.
|
|||
34
Vaflya
07.08.16
✎
15:07
|
ну еще дополню по твоему принципу хранения "даты" в виде числа: к дате это никакого отношения не имеет, так ты пытаешься организовать порядковый номер записи, что бы потом можно было поставить "< или >" (ну а так как время остановить невозможно, то в принципе уникальность + стабильное увеличение числового значения будет, за исключением всякого рода неприятностей, про которые в 33 написал). Сделать тоже самое можно десятью способами, самый простой - получить максимальный номер в таблице и прибавить 1
|
|||
35
DDwe
07.08.16
✎
15:29
|
Если человеку нужно число вместо даты, по каким-то причинам, пусть использует unix-время, это хоть универсальное решение.
|
|||
36
Vaflya
07.08.16
✎
15:41
|
:)
|
|||
37
Aleksey
07.08.16
✎
15:43
|
(3) Обмен происходит на одном компьютере, так что на время клиента пофиг
|
|||
38
Aleksey
07.08.16
✎
15:47
|
(34) Максимальный номер от чего?
(35) В 1С нет команды на получения Unix времени. так что или писать самому, или пользоваться тем что есть. А если нет разницы, то зачем изобретать велосипед и преобразовывать в unix время, тем более что читаемость сильно падает при таком подходе? |
|||
39
Web00001
07.08.16
✎
17:05
|
(38) >>В 1С нет команды на получения Unix времени
Подозреваю, что есть. Вот это собственно оно и будет: ТекущаяДата() - Дата(1970,1,1) ну или как то так |
|||
40
DDwe
07.08.16
✎
17:37
|
(38) Затем, что хранить в базе правильно именно так, выгружать и обмениваться тоже. А писанины там на час с чаем и печенюшками.
Ну а если выводить и кому то показывать, то да, хотя показывать в таком виде "20160806230005" изврат над коиентом еще тот )))) |
|||
41
Aleksey
07.08.16
✎
19:34
|
(40) т.е. 1470598386 намного понятнее чем 20160807193307?
|
|||
42
Serg_1960
07.08.16
✎
23:07
|
(39) unixtime = Формат(ТекущаяДата() - дата(1970,1,1,1,0,0), "ЧГ=0");
|
|||
43
DDwe
08.08.16
✎
04:03
|
(41) Нет, но с первым можно работать просто прибавляя и отнимая секунды, сравнивая и пр. А со вторым нет, это просто строка с представлением в смысле работы бесполезная еще и мало читаемая. А первое значение, преобразуй в адекватное представление по окончании работы и все.
|
|||
44
Aleksey
08.08.16
✎
10:29
|
(4) во втором случае тоже можно прибавлять отнимать и сравнивать
|
|||
45
Горогуля
08.08.16
✎
10:31
|
товарищ тут хрень спросил, а вы тут развели..
|
|||
46
DDwe
08.08.16
✎
10:32
|
(44) Ой ли? А если подумать?
20160131235959 + 1 сколько будет? |
|||
47
DDwe
08.08.16
✎
10:32
|
(45) Да пофиг на товарища, дело в принципе ))))
|
|||
48
Горогуля
08.08.16
✎
10:32
|
(46) +1- это точно больше, чем было
|
|||
49
Горогуля
08.08.16
✎
10:33
|
(47) а я с Алексеем согласен, хоть он и тот ещё.. разговаривать не очем
|
|||
50
lEvGl
гуру
08.08.16
✎
10:38
|
(49) можно пояснений, в чем согласен? а то папатерялась я (с)
|
|||
51
CMblCL
08.08.16
✎
10:40
|
(26) Дата >= 05.08.2016 Или Дата = 05.08.2016 И время >= 10:00:00
|
|||
52
lEvGl
гуру
08.08.16
✎
10:40
|
тема то интересная, но о чем в последних постах говорят и с чем согласен не понятно - нить утеряна
|
|||
53
Горогуля
08.08.16
✎
10:41
|
(50) датой (в восьмёмошном смысле, со временем) очень удобно пользоваться там, где нет времени в дате. число - и всё
|
|||
54
Горогуля
08.08.16
✎
10:42
|
+(53) какую-то фигню сказал, но, надеюсь, смысл ясен
|
|||
55
CMblCL
08.08.16
✎
10:42
|
(26) Дата > 05.08.2016 Или Дата = 05.08.2016 И время >= 10:00:00 *
|
|||
56
Горогуля
08.08.16
✎
10:44
|
и это.. операции с числами гораздо проще и быстрей, чем со строками. правильно представленная дата как число рулит
|
|||
57
Serg_1960
08.08.16
✎
10:50
|
(54) Неее... смысл - не ясень, ибо дата с временем в восьмерке - это число секунд от 15.10.1582 04:00 :)
|
|||
58
lEvGl
гуру
08.08.16
✎
10:51
|
(54) да смысл ясен, но ведь это уже не дата совсем, а число, образованное от даты, за основу можно взять как сказали хоть unix время и это решит проблему, которую решает Алексей. Ему нужна последовательность появления записей в таблице, если правильно понял, что бы потом запросом получить только то, что еще не грузилось куда-то там (номер последней загруженной записи он где то хранит)
|
|||
59
Горогуля
08.08.16
✎
10:51
|
(57) обоссаться. '20140605"
|
|||
60
Горогуля
08.08.16
✎
10:52
|
(58) не дата. а ну чо?
|
|||
61
Serg_1960
08.08.16
✎
10:58
|
(59) Дэк, это начало дня "по умолчанию". "20140605000000"
|
|||
62
Горогуля
08.08.16
✎
11:00
|
(61) Серг_1960, ходи к началам обсуждения
|
|||
63
Горогуля
08.08.16
✎
11:01
|
+(62) ну а я ваще не понимаю, чего оне от меня хотят ;)
|
|||
64
Serg_1960
08.08.16
✎
11:06
|
(62) Да смысла нет ходить. Автору уже был дан ответ. Я стебаюсь, но по теме :)
|
|||
65
ColonelAp4u
08.08.16
✎
11:15
|
Обсуждение конечно интересное но все же ответ тут (2) и выводит в том формате в котором необходимо ТСу
|
|||
66
Serg_1960
08.08.16
✎
11:18
|
(63) Не обращай внимание. Они между собой заспорили, что с форматом даты, представленной как число (например, дата 31.01.2016 23:59:59 представлена как 20160131235959), уже нельзя работать как с датой. Т.е операции сложения и вычитания к числу не "работают" по правилам даты. Сложно сказал? А вопрос то, между прочим, прост как две копейки :)
|
|||
67
Vaflya
08.08.16
✎
13:51
|
(66) ну где то так, дата это дата, число это число
Просто это (9) "Например для сортировки, или для выгрузки в текстовый файл, где нет формата "дата"" и это (12)"дата или дата + время? А если нам эту инфу в 7.7 надо передать, где в дате нет времени?" меня как бы немного смутило, он из даты делает число и говорит, что так удобно передавать дату в дату. Только мне непонятно где там в 7.7 дата то? Просто на основании даты сделали число и все, даты в приемнике как не было так и нет, походу потому что она там и ненужна |
|||
68
Aleksey
08.08.16
✎
14:05
|
(67) Никто не передают дату в дату. Очень часто нужны тупо маркеры, которые прямо пропорционально зависимы от даты и времени, т.е. тупо нужно понимание какое событие было раньше, а какое позже другого события. Т.е. в общем случае даже не важна сама дата, важно просто знать больше или меньше
|
|||
69
Vaflya
08.08.16
✎
14:11
|
(68) ДА!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |