Как работать с DATETIMEOFFSET

ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 449
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)
Благодарил (а): 109 раз
Поблагодарили: 6 раз

Как работать с DATETIMEOFFSET

Сообщение ingasoftplus »

Есть таблица в MSSQL

Код: Выделить всё

[CreatedOn] [datetimeoffset](7) NOT NULL,
И имеем проблемы при добавлении/обновлении и т.п. записи в этой DATETIMEOFFSET (7) колонкой.

В словаре DCT, база с драйвером MSSQL, поле определено как овер на CreatedOn, как

Код: Выделить всё

CreatedOn                   STRING(34)      
CreatedOn_GROUP             GROUP,OVER(CreatedOn) 
CreatedOn_Date                STRING(@D10-)    
CreatedOn_Space1              STRING(@P P)  
CreatedOn_Time                STRING(@T4)                      
CreatedOn_Dot                 STRING(@P.P)                       
CreatedOn_Hundreds            STRING(@N7)
CreatedOn_PlusMinus           STRING(2)                         
CreatedOn_TimeOffset          STRING(@T1)
                            END            
но при работе из кода - ошибки со стороны скл…

Расскажите, кто как работает?? Интересует код для инициализации полей перед ADD() / PUT() и т.п.

Для нормальных полей с типом DATETIME (на SQL стороне) нет проблем, все ясно и понятно, читается/пишется без проблем:

Код: Выделить всё

CreatedOn                   STRING(8)      
CreatedOn_Group             GROUP,OVER(CreatedOn)
CreatedOn_Date                DATE          
CreatedOn_Time                TIME          
                            END             
и потом для записи

Код: Выделить всё

CreatedOn_Date = today()
CreatedOn_Time = clock()
put() или  add()
сразу скажу, база не моя, менять структуру - не вариант, поле datetimeoffset(7)

спасибо за советы! :dizzy:
Последний раз редактировалось ingasoftplus 16 Январь 2025, 11:16, всего редактировалось 1 раз.
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3267
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 48 раз
Контактная информация:

Как работать с DATETIMEOFFSET

Сообщение Дед Пахом »

Мне кажется, поле CreatedOn_Hundreds неверно описано, надо STRING(@n_5), судя по документации:
гггг-ММ-дд HH:mm:ss[.nnnnn] [{+|-}hh:mm]
С уважением, ДП
Аватара пользователя
Admin
Администратор
Сообщения: 4009
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 51 раз
Поблагодарили: 30 раз
Контактная информация:

Как работать с DATETIMEOFFSET

Сообщение Admin »

Дед Пахом писал(а): 15 Январь 2025, 19:45поле CreatedOn_Hundreds неверно описано
С этим соглашусь.
Плюс при проверке на реальном MSSQL структура выглядела как
гггг-ММ-дд HH:mm:ss [{+|-}hh:mm]
и соответственно

Код: Выделить всё

CreatedOn                   STRING(34)      
CreatedOn_GROUP             GROUP,OVER(CreatedOn) 
CreatedOn_Date                STRING(@D10-)    
CreatedOn_Space1              STRING(@P P)  
CreatedOn_Time                STRING(@T4)                      
!CreatedOn_Dot                 STRING(@P.P)                       
!CreatedOn_Hundreds            STRING(@N_5)
CreatedOn_PlusMinus           STRING(2)                         
CreatedOn_TimeOffset          STRING(@T1)
                            END   
Вложения
2025-01-16_09-20-47.png
2025-01-16_09-20-47.png (6.58 КБ) 50036 просмотров
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 449
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)
Благодарил (а): 109 раз
Поблагодарили: 6 раз

Как работать с DATETIMEOFFSET

Сообщение ingasoftplus »

немного проясняется, но не совсем

в формате datetimeoffset(7) должно быть 7 знаков в поле сотых и наверное надо STRING(@n_7)
CreatedOn
2024-07-29 14:31:02.3874770 +02:00

главный вопрос наверное, как заполнять/присваивать поля (которые +02:00 и т.п.)
CreatedOn_PlusMinus
CreatedOn_TimeOffset

из клариона...
Аватара пользователя
Admin
Администратор
Сообщения: 4009
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 51 раз
Поблагодарили: 30 раз
Контактная информация:

Как работать с DATETIMEOFFSET

Сообщение Admin »

Странный тип.
EMS SQL Manager показывает как "2024-12-31 12:22:23 +01:02" и не дает редактировать часть CreatedOn_Hundreds
DBeawer показывает как "2024-12-31 12:22:23.000 +0102" и дает редактировать три знака. Если ввести четыре сбрасывает в NULL
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 449
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)
Благодарил (а): 109 раз
Поблагодарили: 6 раз

Как работать с DATETIMEOFFSET

Сообщение ingasoftplus »

А родной Microsoft SQL Server Management Studio показывает как надо!! :cat:
Datetime.JPG
Ал
✯ Ветеран ✯
Сообщения: 1030
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия
Поблагодарили: 1 раз

Как работать с DATETIMEOFFSET

Сообщение Ал »

DATETIMEOFFSET(n)
:
STRING(26)GROUP,OVER(string)PICTURE(@D10-)PICTURE(@P P)PICTURE(@T4)PICTURE(@P.P)PICTURE(@N0n)STRING(2)PICTURE(@T1)ENDNOTE: When using DATETIMEOFFSET the program must make certain that the STRING(2) field contains ' +' or ' -' only.
Аватара пользователя
Admin
Администратор
Сообщения: 4009
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 51 раз
Поблагодарили: 30 раз
Контактная информация:

Как работать с DATETIMEOFFSET

Сообщение Admin »

ingasoftplus писал(а): 16 Январь 2025, 12:32 А родной Microsoft SQL Server Management Studio показывает как надо!!
Да я понял уже.
Синтаксис:
DATETIMEOFFSET [ ( точность дробных секунд ) ]
Я когда создавал использовал 0
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Ответить