AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
NAV
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.04.2015, 15:11   #1  
xdimidrolx is offline
xdimidrolx
Участник
 
6 / 10 (1) +
Регистрация: 06.11.2013
Доброго времени суток!
DateTime := CURRENTDATETIME вернет там текущий DateTime. Как определить является DateTime - UTC или неUTC ?
Буду рад идеям.
Старый 24.04.2015, 17:38   #2  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Ну например найти вебстраницу, которая сообщает актуальный UTC и посредством HTTP-реквеста из НАВ оный UTC с этой вебстраницы взять
Старый 24.04.2015, 19:24   #3  
Constantine_imported is offline
Constantine_imported
Участник
 
126 / 10 (1) +
Регистрация: 28.04.2011
Еще вариант, в SQL есть функции для работы со временем и часовыми поясами. Можно состряпать запрос, который вернет то, что вам нужно и выполнить его из НАВа.
Старый 27.04.2015, 13:21   #4  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Нав всегда использует UTC для datetime
Старый 27.04.2015, 14:15   #5  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Цитата:
Сообщение от rmv Посмотреть сообщение
Нав всегда использует UTC для datetime
Вообще то я думал, что UTC это время по нулевому часовому поясу /меридиану. Если в NAV выкинуть MESSAGE с CURRENTDATETIME, то увидим время по часовому поясу, который установлен на NAV-компе в региональных настройках. Если актуальное UTC время 15:00 и на компе стоит время России (UTC + 3 часа), то MESSAGE с CURRENTDATTIME покажет 18:00, т.е. время соотв. часовому поясу в региональных настройках а вовсе не UTC (15:00). Или я что-то напутал?
Старый 27.04.2015, 16:28   #6  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Цитата:
Сообщение от AlexB Посмотреть сообщение
Вообще то я думал, что UTC это время по нулевому часовому поясу /меридиану. Если в NAV выкинуть MESSAGE с CURRENTDATETIME, то увидим время по часовому поясу, который установлен на NAV-компе в региональных настройках. Если актуальное UTC время 15:00 и на компе стоит время России (UTC + 3 часа), то MESSAGE с CURRENTDATTIME покажет 18:00, т.е. время соотв. часовому поясу в региональных настройках а вовсе не UTC (15:00). Или я что-то напутал?
Да, Вы совершенно правы, немного не в тему ответил. Речь была о том, что в базу Нав дату всегда пишет в UTC формате.
В контексте вопроса - CURRENTDATTIME всегда возвращает дату в формате "не UTC".
Старый 28.04.2015, 09:56   #7  
xdimidrolx is offline
xdimidrolx
Участник
 
6 / 10 (1) +
Регистрация: 06.11.2013
Цитата:
Сообщение от rmv Посмотреть сообщение
Цитата:
Сообщение от AlexB Посмотреть сообщение
Вообще то я думал, что UTC это время по нулевому часовому поясу /меридиану. Если в NAV выкинуть MESSAGE с CURRENTDATETIME, то увидим время по часовому поясу, который установлен на NAV-компе в региональных настройках. Если актуальное UTC время 15:00 и на компе стоит время России (UTC + 3 часа), то MESSAGE с CURRENTDATTIME покажет 18:00, т.е. время соотв. часовому поясу в региональных настройках а вовсе не UTC (15:00). Или я что-то напутал?
Да, Вы совершенно правы, немного не в тему ответил. Речь была о том, что в базу Нав дату всегда пишет в UTC формате.
В контексте вопроса - CURRENTDATTIME всегда возвращает дату в формате "не UTC".
Да, все так. Но есть одно но! Если это NAV2009 SP1 и работает через вебсервис CURRENTDATTIME вернет в UTC формате, но если это NAV2009R2-NAV2015 и в конфигурации сервера опция "WebServicesDefaultTimeZone" = "Server Time Zone" тогда вернет UTC+LocalRegionalSettings. Вопрос в том, что-бы определить в конкретный момент времени вебсервис работает в UTC или неUTC, при этом не зная конфигурации сервера.
Старый 28.04.2015, 11:28   #8  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Цитата:
Сообщение от xdimidrolx Посмотреть сообщение
Да, все так. Но есть одно но! Если это NAV2009 SP1 и работает через вебсервис CURRENTDATTIME вернет в UTC формате, но если это NAV2009R2-NAV2015 и в конфигурации сервера опция "WebServicesDefaultTimeZone" = "Server Time Zone" тогда вернет UTC+LocalRegionalSettings. Вопрос в том, что-бы определить в конкретный момент времени вебсервис работает в UTC или неUTC, при этом не зная конфигурации сервера.
Если веб-сервис развернут на одном сервере с SQL сервером (на другом сервере в той же тайм зоне) можно попробовать выставить параметры сервера в одну из прилинкованных вьюх, пример ниже
Код:
CREATE view
[dbo].[sys_ConnectionProperties]
as 
select cast(serverproperty('servername') as varchar(100)) as server_name, DB_NAME() as db_name, @@SPID as spid
	, system_USER as [system_user]
	, GETUTCDATE() as UTC_DT 
	, GETDATE() as DT
А далее уже сравнивать смещение CURRENTDATETIME от UTC_DT и DT,
Старый 19.06.2015, 09:12   #9  
xdimidrolx is offline
xdimidrolx
Участник
 
6 / 10 (1) +
Регистрация: 06.11.2013
Цитата:
Сообщение от rmv Посмотреть сообщение
Цитата:
Сообщение от xdimidrolx Посмотреть сообщение
Да, все так. Но есть одно но! Если это NAV2009 SP1 и работает через вебсервис CURRENTDATTIME вернет в UTC формате, но если это NAV2009R2-NAV2015 и в конфигурации сервера опция "WebServicesDefaultTimeZone" = "Server Time Zone" тогда вернет UTC+LocalRegionalSettings. Вопрос в том, что-бы определить в конкретный момент времени вебсервис работает в UTC или неUTC, при этом не зная конфигурации сервера.
Если веб-сервис развернут на одном сервере с SQL сервером (на другом сервере в той же тайм зоне) можно попробовать выставить параметры сервера в одну из прилинкованных вьюх, пример ниже
Код:
CREATE view
[dbo].[sys_ConnectionProperties]
as 
select cast(serverproperty('servername') as varchar(100)) as server_name, DB_NAME() as db_name, @@SPID as spid
	, system_USER as [system_user]
	, GETUTCDATE() as UTC_DT 
	, GETDATE() as DT
А далее уже сравнивать смещение CURRENTDATETIME от UTC_DT и DT,
Боюсь этот способ не подойдет, должен быть "generic solution" подходящий для NAV2009 - NAV2015, независимо от SQL.
Старый 19.06.2015, 13:42   #10  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Цитата:
Сообщение от xdimidrolx Посмотреть сообщение
Боюсь этот способ не подойдет, должен быть "generic solution" подходящий для NAV2009 - NAV2015, независимо от SQL.
То есть и для Native DB ?
Старый 21.06.2015, 21:37   #11  
dmites is offline
dmites
Участник
Аватар для dmites
 
221 / 14 (1) ++
Регистрация: 10.08.2005
SQL-запросом

SQLAddQueryText('select Convert(varchar(50), getutcdate(),104)+');
SQLAddQueryText(app+' '+app+'+Convert(varchar(50), getutcdate(),108) as DT');
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:17.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.