メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

DATEDIFF 関数

DATEDIFF は 2 つの日付または時刻式の日付部分の差を返します。

構文

Copy
DATEDIFF ( datepart, {date|timestamp}, {date|timestamp} )

引数

datepart

関数が実行される日付の値 (例: 年、月、または日) の特定部分。詳細については、「日付関数またはタイムスタンプ関数の日付部分」を参照してください。

特に、DATEDIFF は 2 つの式の間で越える日付部分の境界の数を決定します。例えば、2 つの日付 (12-31-200801-01-2009) の間で年数の差を計算する場合、実際のこれらの日付には 1 日の違いしかありませんが、関数は 1 年を返します。2 つのタイムスタンプ (01-01-2009 8:30:0001-01-2009 10:00:00) の間で時間の差が分かっている場合、結果は 2 時間になります。

date|timestamp

日付またはタイムスタンプの列、あるいは暗黙的に日付またはタイムスタンプに変換される式。両方の式には、指定した日付部分を含める必要があります。2 番目の日付または時刻が 1 番目の日付または時刻よりも後である場合、結果は正です。2 番目の日付または時刻が 1 番目の日付または時刻よりも前である場合、結果は負です。

戻り型

BIGINT

2 つの日付リテラル値の間の差 (週単位) を取得します。

Copy
select datediff(week,'2009-01-01','2009-12-31') as numweeks; numweeks ---------- 52 (1 row)

過去のリテラル値と今日の日付の間の差 (四半期単位) を取得します。この例では、現在の日付を 2008 年 6 月 5 日とします。完全名または略名で日付部分に名前を付けることができます。DATEDIFF 関数のデフォルトの列名は DATE_DIFF です。

Copy
select datediff(qtr, '1998-07-01', current_date); date_diff ----------- 40 (1 row)

この例は、SALES テーブルと LISTING テーブルを結合し、リスト 1000 から 1005 に対してチケットをリストしてから何日後に販売されたかを計算します。これらのリストの販売を最長の待機期間は 15 日であり、最小は 1 日より短いです (0 日)。

Copy
select priceperticket, datediff(day, listtime, saletime) as wait from sales, listing where sales.listid = listing.listid and sales.listid between 1000 and 1005 order by wait desc, priceperticket desc; priceperticket | wait ---------------+------ 96.00 | 15 123.00 | 11 131.00 | 9 123.00 | 6 129.00 | 4 96.00 | 4 96.00 | 0 (7 rows)

この例は、販売者が任意およびすべてのチケット販売を待機する平均時間を計算します。

Copy
select avg(datediff(hours, listtime, saletime)) as avgwait from sales, listing where sales.listid = listing.listid; avgwait --------- 465 (1 row)

このページの内容: