Вычитая дату, сохраненную как Bigint из GETDATE (), чтобы вычислить текущий возраст - PullRequest
0 голосов
/ 29 апреля 2019

Я относительно новичок в SQL и мне нужна помощь. У меня есть сторонняя база данных билетов, которая хранит даты как bigint. Я хотел бы иметь возможность рассчитать возраст билетов. Я могу преобразовать bigint в формат даты, используя dateadd (s, CREATEDTIME / 1000, '01 -01-1970 '). Я пытаюсь сравнить его с текущей датой, чтобы рассчитать возраст билета.

Я использовал datediff (DAY, (s, CREATEDTIME / 1000, '01 -01-1970 '), GETDATE ())) как "возраст билета", надеясь, что это сработает, но не повезло.

Вот полный запрос на данный момент -

выберите dateadd (s, CREATEDTIME / 1000, '01 -01-1970 ') как' Created_Date ',
datediff (DAY, (s, CREATEDTIME / 1000, '01 -01-1970 '), GETDATE ())) как "возраст билета", WORKORDERID как «Запросить идентификатор» от WorkOrder

Ответы [ 2 ]

0 голосов
/ 29 апреля 2019

Как правило, при подсчете дней, из-за того, как работает функция datediff, я вычисляю часы, а затем делю на 24. (дата в днях между 4 апреля, 23:59 и 5 апреля 00:01 равна 1, что не 't всегда то, что хотят люди).

Таким образом, выполнение запроса для получения нужных вам чисел дает примерно следующее:

select dateadd(SECOND,CREATEDTIME/1000, '01-01-1970') as 'Created_Date',
CAST(DATEDIFF(HOUR,dateadd(SECOND,CREATEDTIME/1000, '01-01-1970'),GETDATE()) AS DECIMAL(15,4))/24 AS 'ticket age', 
WORKORDERID as 'Request ID' 
FROM WorkOrder
0 голосов
/ 29 апреля 2019

Ну, как насчет использования:

dateadd(second, CREATEDTIME/1000, '1970-01-01') < getdate()

Или, если вы хотите сравнение с текущей датой без временной составляющей:

dateadd(second, CREATEDTIME/1000, '1970-01-01') < convert(date, getdate())

Примечаниечто в этом коде написано second и дата помещена в канонический формат ГГГГ-ММ-ДД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...