You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQLite中存储日期值?WinForms开发相关技术问题

SQLite 存储 DateTime 类型数据实现方案

SQLite 本身没有内置的 DateTime 数据类型,针对你的 WinForms 开发场景,入门级开发者可以选择以下两种易实现的通用方案:

方案1:ISO 8601 文本存储(首选,入门友好)

将 DateTime 格式化为固定格式的字符串存储到 SQLite 的 TEXT 类型字段中,调试时直接查看数据库就能识别日期内容,上手成本极低。

  • 存储转换代码(C#):
    // invoice是你的类实例,InvoiceDate为DateTime类型属性
    string saveDate = invoice.InvoiceDate.ToString("yyyy-MM-dd HH:mm:ss");
    // 后续将saveDate作为参数插入到数据库对应字段即可
    
  • 读取转换代码(C#):
    // 从SQLite读取到的日期字符串转回到DateTime类型
    invoice.InvoiceDate = DateTime.Parse(reader["invoice_date"].ToString());
    

方案2:Unix 时间戳存储(适合日期计算/排序场景)

将 DateTime 转换为整数类型的 Unix 时间戳(从1970-01-01 00:00:00 UTC到目标时间的秒数/毫秒数),存储到 SQLite 的 INTEGER 类型字段中,日期比较、排序、计算差值的效率更高。

  • 存储转换代码(C#):
    long timeStamp = new DateTimeOffset(invoice.InvoiceDate).ToUnixTimeSeconds();
    // 后续将timeStamp作为参数插入到数据库对应字段即可
    
  • 读取转换代码(C#):
    invoice.InvoiceDate = DateTimeOffset.FromUnixTimeSeconds((long)reader["invoice_date"]).DateTime;
    

配套表创建示例(以方案1为例)

CREATE TABLE invoices (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    -- 其他你需要的字段,比如发票号、金额等
    invoice_date TEXT NOT NULL
);

额外优化建议

如果不想手动写类型转换代码,可以引入轻量ORM库 Dapper 操作 SQLite,库会自动完成 DateTime 类型和 SQLite 存储类型的双向转换,进一步降低开发成本。

内容的提问来源于stack exchange,提问作者Talha Haroon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 03:09:02