私は、各レコードのUnixタイムスタンプを含むフィールドを持つテーブルを持っています。 年と月が現在の年と月と等しい各行を戻したいと思います。SQLは2つのUNIXタイムスタンプを比較しますか?
これを行う簡単な方法はありますか?
おかげ
私は、各レコードのUnixタイムスタンプを含むフィールドを持つテーブルを持っています。 年と月が現在の年と月と等しい各行を戻したいと思います。SQLは2つのUNIXタイムスタンプを比較しますか?
これを行う簡単な方法はありますか?
おかげ
これは、日時にご使用の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で作業することはできませんか?
興味のある月と年のUnix時間値の上限と下限を計算して、単純なSQL比較を行います。
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)