在PostgreSQL查询中将日期时间转换为指定格式

8i9zcol2  于 2022-12-23  发布在  PostgreSQL
关注(0)|答案(3)|浏览(537)

为了将日期时间转换为SQL Server CE,我使用以下格式

var date = "CONVERT(datetime,'" + 
((DateTime) DateTime.UtcNow).ToString("yyyyMMdd HH:mm:ss tt", new CultureInfo("en-us")) 
+ "',112)";

对于Oracle:

var date = "TO_DATE('" 
+ ((DateTime)DateTime.UtcNow).ToString("MMddyyyy hh:mm:ss tt") 
+ "', 'mmddyyyy hh:mi:ss')";

对于MySQL:

var date = "STR_TO_DATE('" 
+ ((DateTime)DateTime.UtcNow).ToString("yyyyMMdd HH:mm:ss", new CultureInfo("en-us")) 
+ "','%Y%m%d %H:%i:%s')";

有人能告诉我如何在PostgreSQL中转换相同的内容吗?

**注意:**我使用的是timestamp数据类型

uqcuzwp8

uqcuzwp81#

可以使用to_char函数来格式化时间戳:

SELECT TO_CHAR(current_timestamp, 'MMDDYYYY HH24:MI:SS')

编辑:
为了回答评论中的问题,可以在insert语句中应用相同的调用:

INSERT INTO my_table
(formatted_timestamp_column, some_other_column)
VALUES (TO_CHAR(current_timestamp, 'MMDDYYYY HH24:MI:SS'), 'some_value')
2w2cym1i

2w2cym1i2#

如果你想要一个非常简单的方法,你也可以使用这个:

var date = $"'{new NpgsqlDateTime(DateTime.UtcNow)}'";

编辑:自Npgsql版本7.* 以来,此功能已被弃用。https://github.com/npgsql/npgsql/issues/2009

wqlqzqxt

wqlqzqxt3#

有了PostgreSQL,你可以使用Oracle的代码,只需要用to_timestamp代替to_date
不同之处在于date在PostgreSQL中是一个 * 真实的 * 日期,而不是像在Oracle中那样是一个二次精度的时间戳,因此尽管可以像上面那样使用to_date,但结果将没有任何时间信息。
顺便说一句,你的Oracle格式是错误的。你可能想用HH24而不是HH来表示“小时”部分。

相关问题