Страница 1 из 1

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

Добавлено: 15 Январь 2025, 17:04
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:

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

Добавлено: 15 Январь 2025, 19:45
Дед Пахом
Мне кажется, поле CreatedOn_Hundreds неверно описано, надо STRING(@n_5), судя по документации:
гггг-ММ-дд HH:mm:ss[.nnnnn] [{+|-}hh:mm]

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

Добавлено: 16 Январь 2025, 2:21
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   

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

Добавлено: 16 Январь 2025, 10:51
ingasoftplus
немного проясняется, но не совсем

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

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

из клариона...

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

Добавлено: 16 Январь 2025, 12:22
Admin
Странный тип.
EMS SQL Manager показывает как "2024-12-31 12:22:23 +01:02" и не дает редактировать часть CreatedOn_Hundreds
DBeawer показывает как "2024-12-31 12:22:23.000 +0102" и дает редактировать три знака. Если ввести четыре сбрасывает в NULL

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

Добавлено: 16 Январь 2025, 12:32
ingasoftplus
А родной Microsoft SQL Server Management Studio показывает как надо!! :cat:
Datetime.JPG

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

Добавлено: 17 Январь 2025, 0:21
Ал
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.

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

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