timestamp without time zone default now()
PostgreSQLデータベースにtype で「作成」された列があります。
列を選択すると、デフォルトで見やすく読みやすい形式になります。
SELECT created FROM mytable;
created
---------------------------
2011-05-17 10:40:28.876944
しかし、私はミリ秒だけでタイムスタンプを取得したい(ロングとして)。このようなもの:
SELECT myformat(created)FROM mytable;
created
-----------------
2432432343876944
PostgreSQLからミリ秒単位でタイムスタンプ列を取得するにはどうすればよいですか?
ジャックへの応答:
私はあなたと同じ違いを取得します(-3600)が、使用するtimestamp with time zone
と、「エラー」または違いは「1970-01-01」がタイムゾーンを取得するためであることがわかります+01
。
create table my_table_2(created timestamp with time zone);
CREATE TABLE
insert into my_table_2 (created) values (now()), ('1970-01-01');
INSERT 0 2
select created, extract(epoch from created) from my_table_2;
created | date_part
-------------------------------+------------------
2011-05-18 11:03:16.909338+02 | 1305709396.90934
1970-01-01 00:00:00+01 | -3600
(2 rows)
違いはバグですか?現時点では「夏時間」のせいですか?
to_timestamp()
タイムスタンプ0および1の挿入に使用する際にも興味深い。
insert into my_table_2 (created) values (to_timestamp(0));
INSERT 0 1
insert into my_table_2 (created) values (to_timestamp(1));
INSERT 0 1
select created, extract(epoch from created) from my_table_2;
created | date_part
-------------------------------+------------------
2011-05-18 11:03:16.909338+02 | 1305709396.90934
1970-01-01 00:00:00+01 | -3600
1970-01-01 01:00:00+01 | 0
1970-01-01 01:00:01+01 | 1