2009-07-31 11 views

答えて

1

これは、日時にご使用のUNIXタイムスタンプを(私は仮定していたが、ある種の数値型指定された列に格納されている)に変換されます:

SELECT dateadd(s, MyTimeStampCol, '19700101') 

は、あなたがあるべきことを考えます

を: - 私はUnixのタイムスタンプを持つ経験がないので、私はリファレンスとしてこれを使用していますところで

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

:このような何かを行うことができます10

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

編集:あなたはSQL Serverでいないのであれば、あなたは再び

GETDATE編集の代わりにCURRENT_TIMESTAMPを使用する必要があります:あなたはSQLを使用していない場合は、考えてみるとサーバー、dateaddが動作するかどうかはわかりません。ほとんど排他的にSQL Serverで作業することはできませんか?

0

興味のある月と年のUnix時間値の上限と下限を計算して、単純なSQL比較を行います。

0

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) 
関連する問題