(:、「{S 0}」DateTime.Now)String.FormatののPostgreSQLのものは何ですか?

StackOverflow https://stackoverflow.com/questions/680086

  •  22-08-2019
  •  | 
  •  

質問

PostgreSQLでソート可能な日時/タイムスタンプvarchar型の同等は何でしょうか。

Console.WriteLine("{0:s}", DateTime.Now);

サンプル書式出力

2000-05-04T15:30:59

このは今SELECT :: varchar型を、作品、出力は、タイムスタンプの等価だかと思ったが、日付のみのタイプについて、「2009-03-25」です。

注、私はちょうど.NETとMonoの間のDateTimeの非互換性が発生し、日付は、それ自体でソート可能である知っているので、私は、データベースのタイプを根底に、まだ適切な日付はvarcharとしてちょうど輸送(リモーティング)、日付/タイムスタンプの種類、あります/タイムスタンプフィールドタイプ。これと同じ問題に遭遇した人のために、この問題を回避するには、データを取得し、保存するときの日付に戻ってvarchar型をキャストする際にvarchar型に日付をキャストします。

役に立ちましたか?

解決

基本的にはあなただけのTO_CHAR関数を使用します。

あなたの例の問題点は、理論的にはこれは動作するはずながら、ということです。

select to_char( now(), 'YYYY-MM-DDTHH24:MI:SS' );

実際に - PostgreSQLは「理解する」ことができないTはセパレータであり、HH24は、次の「タグ」であり、且つとしてそれを印刷することを

2009-03-24THH24:32:45

しかし、あなたは、単に比較的それを変更することができます:

select translate( to_char( now(), 'YYYY-MM-DD HH24:MI:SS' ), ' ', 'T' );

は要求されたフォーマットを出力する

2009-03-24T21:33:21

もちろん翻訳し使用することを常に覚えている古いかなり速いなるので、代わりに独自の関数を作成することができますし、代わりにそれを使用します:

create function custom_ts(timestamptz) returns text as $$
  select translate( to_char( $1, 'YYYY-MM-DD HH24:MI:SS' ), ' ', 'T' );
$$ language sql;
# select custom_ts(now());
      custom_ts
---------------------
 2009-03-24T21:35:47
(1 row)

他のヒント

それとも単にます:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD"T"HH24:MI:SS');
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top