0

次のコードを使用して、PostgreSQL の特定のタイムスタンプから日付部分を抽出しています。

SELECT DATE('2004-07-17 01:00:00'); 

上記のステートメントは正常に機能し、結果は2004-07-17.

しかし、date()PostgreSQLのドキュメントで説明されている関数はどこにありますか?

このセクションで広範囲に検索しました: http://www.postgresql.org/docs/9.2/static/functions-datetime.html、しかし、これまでのところ役に立たないものは見つかりませんでした...

4

2 に答える 2

4

date()機能の説明はありませんcastcast('2004-07-17 01:00:00' as date)またはのように'2004-07-17 01:00:00'::date

私の記憶が正しければ、フォームを使用できます。これはdate('2004-07-17 01:00:00')、内部的にすべてのキャストが関数として実装されており、そのような関数の 1 つを直接呼び出しているためです。または、構文糖衣の別の部分である可能性もあります。

更新: 検索しているマニュアルの部分は ですhere。第 4.2.9 章。タイプキャスト。

また、キャストがどのように実装されているかについての役立つ情報もありますhere

更新 2: マニュアルからの引用:

注: 関数のような構文は、実際には単なる関数呼び出しです。2 つの標準キャスト構文のいずれかを使用してランタイム変換を行うと、登録された関数が内部的に呼び出されて変換が実行されます。慣例により、これらの変換関数は出力型と同じ名前を持つため、「関数のような構文」は、基礎となる変換関数の直接呼び出しにすぎません。明らかに、これは移植可能なアプリケーションが依存すべきものではありません。詳細については、CREATE CAST を参照してください。

于 2013-04-28T12:56:04.120 に答える
2

これは、標準 SQL の構文糖衣にすぎないと思います。標準 SQL では、日付を次のように表現します。PostgreSQL は同じ構文を受け入れます。

select date '2004-07-17 01:00:00'

ここでも、PostgreSQL は値「2004-07-17」を返します。これは「日付」型です。ドキュメントで最も近いのはDate/Time Inputのこの段落だと思います。(ただし、これは構文糖衣ではなく、SQL 標準を文書化したものです。)

日付または時刻のリテラル入力は、テキスト文字列のように一重引用符で囲む必要があることに注意してください。詳細については、セクション 4.1.2.7 を参照してください。SQL には次の構文が必要です

タイプ [ (p) ] '値'

p は、秒フィールドの小数桁数を指定するオプションの精度仕様です。精度は、時刻、タイムスタンプ、および間隔タイプに指定できます。

また、タイムスタンプの構文も同様です。

select timestamp '2004-07-17 01:00:00'

これはPostgreSQL では機能しないことに注意してください。. .

select timestamp('2004-07-17 01:00:00')

しかし、これはそうなるでしょう。

select "timestamp"('2004-07-17 01:00:00')
于 2013-04-28T12:45:18.817 に答える