Преобразование метки времени BMC Remedy в формат мм / дд / гггг - PullRequest
0 голосов
/ 04 октября 2011

Согласно документации, которую я нашел в AR Systems по BMC Remedy, временные метки в среде MSSQL Server (здесь мы используем SQL Server 2005) хранятся как тип данных int в формате меток времени UNIX. .

Я не могу получить собственный SQL в Business Objects Web Intelligence, который позволил бы мне конвертировать эту метку времени в формат мм / дд / гггг, который мне нужен, чтобы иметь возможность группировать записи по дате (очевидно, без метки времени ). Все, что я пытаюсь сделать, включая преобразование математических данных или типов данных, приводит к ошибке «недопустимый тип». Я не могу преобразовать поле в int, varchar, datetime или что-то еще. Единственная работающая функция - это DATEADD, которая по-прежнему возвращает полную метку времени.

Как я могу преобразовать это? Я схожу с ума здесь!

Ответы [ 4 ]

3 голосов
/ 26 июля 2012

для преобразования GMT / UTC / Zulu в местный часовой пояс (EDT / Нью-Йорк):

DATEADD(hour,-5,DATEADD(s,Last_Modified_Date,'1/1/1970 00:00:00'))

Пример использования для отображения записей информации о работе Remedy (Transact-SQL):

SELECT Work_Log_ID, DATEADD(hour, +12, DATEADD(s, Last_Modified_Date, '1/1/1970 00:00:00')) as Last_Modified_Date , Description, Detailed_Description, Infrastructure_change_ID, Number_of_Attachments 
FROM dbo.CHG_WorkLog
  WHERE Infrastructure_Change_ID = 'CRQ001261'
  ORDER BY Work_Log_ID desc
0 голосов
/ 06 октября 2011

Возможно, вам понадобится умножить временную метку int на 1000. Система AR хранит дату как количество «секунд», тогда как большинство других языков хранят метку времени Unix в виде миллисекунд (и длинного типа данных)

Надеюсь, это поможет!

0 голосов
/ 02 мая 2012

Перейти к

инструмент пользователя -> Инструменты -> Параметры -> вкладка Язык -> Стиль даты / времени -> Пользовательский формат -> мм / дд / гггг

0 голосов
/ 04 октября 2011

Почему это не работает?

DECLARE @timestamp INT

SELECT @timestamp =  DATEDIFF(s,'1/1/1970 00:00:00',GETDATE())

SELECT DATEADD(s,@timestamp,'1/1/1970 00:00:00')

Замените @Timestamp значением из вашей таблицы.

...