簡體   English   中英

在Npgsql中使用帶時區的時間戳

[英]Using timestamp with time zone with Npgsql

需要在數據庫中保存帶有時區的時間戳。 表中的目標字段聲明為

"UploadTime" timestamp with time zone

我正在使用命令參數插入數據:

var uploadTime = DateTimeOffset.Now;
var insertQuery = @"INSERT INTO ""Table"" (""UploadTime"") VALUES :uploadTime"; 
var uploadTimeParam = new NpgsqlParameter("uploadTime", NpgsqlDbType.TimestampTZ);
uploadTimeParam.Value = uploadTime;
var insertCommand = new NpgsqlCommand(insertQuery, databaseConnection);
insertCommand.Parameters.Add(uploadTimeParam);

值被存儲並作為不帶時區的DateTime返回。 我猜這是因為默認情況下,“帶時區的時間戳”數據庫類型被映射到DateTime。 可能可以通過檢出源並對TimestampTZ進行相應更改來解決此問題,但這會干擾使用Nuget管理項目依賴項的想法。 也許有一些不太復雜的方法可以實現這一目標? 存儲滴答並將其轉換為DateTimeOffset是一項開銷,在我的情況下,在執行查詢之前無法使用“ SET TIME ZONE INTERVAL”進行設置。 在此先感謝您提供任何解決方案。

通過存儲其他手動映射到DateTimeOffset的時間戳RTT字段來解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM