datediff
関数を使う。この関数の書式は以下のようになっており、date-partには求めたい差の単位day,hour,secondなど、date-expression-1,2には差を求めたい2つの時刻を入れる。date-expression-1のほうに古いほうの時刻があると関数の結果は正となり、新しいと負になる。
DATEDIFF( date-part, date-expression-1, date-expression-2 )
たとえば、以下のようなスキーマのテーブルがあり、
upd_time
に各行の更新時刻が入っているような場合、
CREATE TABLE mytable (
r_id integer NOT NULL
,r_data varchar(100) NOT NULL
,upd_time timestamp NOT NULL
);
このテーブルから、1時間以内に更新された行を抽出するSQLは次のように書ける。
条件句にDATEDIFF関数を使って現在時刻NOW()関数とupd_time列の差を秒単位で求め、3600秒以内である行のみを抽出する。
SELECT r_id,r_data,upd_time
FROM mytable
WHERE DATEDIFF(second,upd_time,NOW()) <= 3600
ORDER BY start_time
この関数はSQL2003標準であるため、サポートしている別のDB、たとえばSQL Server 2008などでも同じように使えるようだ。
0 件のコメント:
コメントを投稿