什么是可排序的日期时间/时间戳VARCHAR的PostgreSQL中等效?

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

样本格式输出:

2000-05-04T15:30:59

这工作,选择立即:: 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