sqlite 将值从UNIX转换为DatagridView列中的DateTime

u5rb5r59  于 2023-06-23  发布在  SQLite
关注(0)|答案(2)|浏览(138)

我的应用程序使用的是SQLite数据库,它没有DateTime格式。因此,这些值以UNIX格式存储,而信息则使用DataGridView显示。什么函数可以将UNIX转换为DateTime格式并在DataGridView中显示?
我尝试在DataTable中转换此列,但在数据库中,此列具有INT格式,因此我犯了一个错误。我还尝试向DataTable添加一个新列,并使用Expression填充该列。

string sql = "Select * from Main";

var conn = new SQLiteConnection("Data Source = FistDB.db;Version = 3");
conn.Open();

DataSet ds = new DataSet();
var da = new SQLiteDataAdapter(sql, conn);

da.Fill(ds);

dataGridView1.DataSource = dt;
webghufk

webghufk1#

修改SQL请求以获得所需格式的时间戳:

SELECT Col1, Col2, strftime(requred_time_format, Col3), ... FROM MAIN

如果需要,使用“DATETIME(Col3,'LOCALTIME')”将时间戳转换为本地时间。
参见https://www.sqlite.org/lang_datefunc.html

jaxagkaj

jaxagkaj2#

最后,您总是希望在DateTime结构中处理时间戳,因此最好在管道中尽早转换UNIX epoch。这将正确处理时区信息、夏季白天保存和文化信息(以及更多)。
这是你的一个句子:

var dateTime = DateTimeOffset.FromUnixTimeSeconds(1687006136).DateTime;

PS:确保使用FromUnixTimeMilliseconds毫秒
更多信息:https://learn.microsoft.com/en-us/dotnet/api/system.datetimeoffset?view=net-7.0
PS2:时间抽象API将在.NET 8中使用change,但不会影响此用例。

相关问题