SQL, чтобы сравнить две метки времени Unix? - PullRequest
1 голос
/ 31 июля 2009

У меня есть таблица с полем, которое содержит метки времени Unix для каждой записи. Я хотел бы вернуть каждую строку, где год и месяц равны текущему году и месяцу.

Есть ли простой способ сделать это?

Спасибо

Ответы [ 3 ]

1 голос
/ 31 июля 2009

Это преобразует вашу метку времени Unix (которая, как я предполагаю, хранится в каком-либо столбце с числовым типом) в дату и время:

SELECT dateadd(s, MyTimeStampCol, '19700101')

Учитывая это, вы должны быть в состоянии сделать что-то вроде этого:

SELECT  *  --(Your columns)
FROM    MyTable
WHERE   YEAR(dateadd(s, MyTimeStampCol, '19700101')) = year(getdate())
AND     month(dateadd(s, MyTimeStampCol, '19700101')) = month(getdate())

Кстати, у меня нет опыта работы с метками времени Unix, поэтому я использую это как справку:

http://www.unixtimestamp.com/index.php

edit: если вы не используете SQL Server, вам нужно использовать CURRENT_TIMESTAMP вместо getdate

снова отредактируйте: если подумать, если вы не используете SQL Server, я не уверен, что dateadd будет работать. Не можете сказать, что я работаю почти исключительно с SQL Server?

0 голосов
/ 01 августа 2009

SQL Server 2005 +:

WITH dates AS (
    SELECT t.timestampCol,
            YEAR(DATEADD(s, t.timestampCol, '19700101')) 'year',
            MONTH(DATEADD(s, t.timestampCol, '19700101')) 'month'
       FROM TABLE t)
SELECT t.*
 FROM TABLE t
 JOIN dates d ON d.timestampCol = t.timestampCol
WHERE d.year = YEAR(GETDATE()) 
  AND d.month = MONTH(GETDATE())

Oracle 9i +:

WITH dates AS (
     SELECT t.timestampCol,
            EXTRACT(YEAR FROM t.timestampCol + (1/(24*60*60) * 19700101) 'year',
            EXTRACT(MONTH FROM t.timestampCol + (1/(24*60*60) * 19700101) 'month'
       FROM TABLE t)
SELECT t.*
 FROM TABLE t
 JOIN dates d ON d.timestampCol = t.timestampCol
WHERE d.year = EXTRACT(YEAR FROM SYSDATE) 
  AND d.month = EXTRACT(MONTH FROM SYSDATE)
0 голосов
/ 31 июля 2009
man ctime

Вычислите верхний и нижний пределы значения времени Unix для интересующего вас месяца и года, затем выполните простое сравнение SQL.

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