26.05.2005, 13:26 | #1 |
Участник
|
Подскажите, пожалуйста, как работать с датой/временем в аксапте?
Встроенный тип Date хранит только дату. Так, например, я через ADO подключаюсь к внешнему источнику данных. Предположим, это некоторая таблица, в которой поле DATE содержит дату/время с точностью до секунд. Я читаю данные из этого поля: (с помощью класса-обертки ADO) COMVariant _date=qry.GetValue("DATE").date(); при этом время отсекается! Как бороться с этим? |
|
03.06.2005, 14:00 | #2 |
Участник
|
Насколько я понимаю, путь только один:
Считываешь дату-время как символьную строку, выделяешь фрагмент с временем, потом используя str2time() конвертируешь в формат Time собственно AXAPTA. Ну, и чтобы второй раз не тянуть то же самое, можно выделенный фрагмент даты конвертировать через str2date() в формат Date собственно AXAPTA. |
|
03.06.2005, 17:36 | #3 |
Участник
|
посмотрите класс COMVariant. Там есть метод time.
Скорее всего вам нужно забирать сразу время. qry какого типа? Какой тип возвращает getDate()? Если Variant, то в левой части равенства используйте переменную с Аксаптовским типом COMVatiant. Затем метод time() |
|
06.06.2005, 15:47 | #4 |
Участник
|
Спасибо!
Я сделал так: написал класс DateTime, хранящий дату/время в виде числа с плавающей точкой (а ля Delphi). |
|
06.06.2005, 15:48 | #5 |
Участник
|
Класс? радикально.
А уже существующий тип Time не подошел? |
|
07.06.2005, 06:34 | #6 |
Участник
|
но Time вроде бы содежит только время (число секунд начиная с полуночи), а дату не содержит. Вот я и решил написать класс, который бы содержал и дату и время (в виде real) и при необходимости мог преобразовывать ее к нужному виду(например, в строку вида 'DD.MM.YY HH:MM:SS' и т.д.)
|
|
07.06.2005, 16:34 | #7 |
Участник
|
хм... да, был неправ.
Спасибо. |
|