在PostgreSQL查询

时间:2016-06-27 06:53:13

标签: c# sql postgresql datetime date-formatting

要将datetime转换为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数据类型

3 个答案:

答案 0 :(得分:1)

您可以使用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')

答案 1 :(得分:0)

使用PostgreSQL,您可以使用Oracle中的代码,只需使用to_timestamp代替to_date

不同之处在于,PostgreSQL中的date真正的日期,而不是像Oracle中那样具有第二精度的时间戳。 因此,虽然您可以像上面那样使用to_date,但结果将没有任何时间信息。

顺便说一下,你的Oracle格式是错误的。您可能希望使用HH24而不是HH作为“小时”部分。

答案 2 :(得分:0)

如果您想使用一种非常简单的方法,也可以使用以下方法:

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