2016-07-18 7 views
0

私はPostreSQlサーバーを使用しており、日付でタイムスタンプの一部分をグループ化しなければなりません(月別、私はExtract(year from timestamp)関数を使用していますが、Postgresqlのマニュアルには、同じことを行うことができるdate_part('year',timestamp)という関数があることがわかりました。ここで私はどの機能を使うべきか、どの機能が効率的かを混乱させました。また、日付部分で掘り下げたデータを得るもう一つの良い方法があるかどうか教えてください。PostgreSQLのEXTRACT(yearからtimestamp)関数とdate_part( 'year'、timestamp)の差異

+0

を使用してください。使用しているクエリを含めることはできますか? –

+0

こんにちはTim、 私はクエリを使用しています: を選択してください。(MONTH FROM date(ticket.transactiondate))、(round(cast(sum)(ticketitem.netprice)as NUMERIC(36,2))、2))asチケットからのkpiとしてのcount(distinct ticket.id)のカウント(ticketitem.id)。ticket.id = ticketitem.ticketidのINNER JOINチケット項目(EXTACT(MONTH FROM date(ticket.transactiondate))= '7' EXTRACT(1月のチケットの取引日)= '6')とEXTRACT(1月のチケットの取引日)= '2015'のグループを1桁で返します。 ありがとうございます! –

答えて

1

どちらも同じです。

実際にextract()date_trunc()に書き直されます。実行計画を確認すると、表示されます。

extract()は、SQL標準に準拠しています。date_trunc()はPostgres固有のクエリです。 1つが他のものに変換されるとき、パフォーマンスの違いはまったくありません。標準のSQLを書く場合は、extract()

関連する問題