【问题标题】:Auto Deleting rows after expiration date in a SQLite database c#SQLite数据库c#中过期日期后自动删除行
【发布时间】:2017-01-09 17:17:44
【问题描述】:

我有一个使用 SQLite 数据库的程序,它需要在过期日期低于当前时间后删除一行。我尝试与之交互的表有一个字段,其中包含 id、名称、到期日期、进入日期、客户代码,每个客户都有不同的到期日期,并且使用以下方法检索此数据:

DateTime.Now.AddDays(numberofdaysstaying)

当前时间通过以下方式检索:

日期时间.现在

我的 sql 代码在另一个名为 sqlManager 的类中执行,我用来自动删除的函数是:

        public void Autodelete()
    {
        using (SQLiteConnection sqlConn = new SQLiteConnection("Data Source=projecto.sqlite;Version=3;"))
        {
            sqlConn.Open();
            //create command
            SQLiteCommand sqlCommand = new SQLiteCommand("DELETE FROM cliente WHERE expirationDate < @td", sqlConn);
            sqlCommand.Parameters.AddWithValue(Datetime.Now));

            sqlCommand.ExecuteNonQuery();
        }

这实际上并没有什么作用,没有例外或类似的东西......它只是没有删除任何东西。关于如何完成这项工作的任何提示?

【问题讨论】:

  • @Plutonix 作为日期时间
  • @Plutonix 是对的;那么你是如何存储你的 DateTime 的呢?
  • 如果他选择 datetime 作为列类型,则 real 列类型由类型关联设置为 numeric,如记录@ 987654321@
  • "expirationDate DATETIME" @Plutonix
  • @SirRufo 是的,我确实选择了它在数据库中显示为“30/08/2016 11:55:43”的日期时间

标签: c# sqlite datetime


【解决方案1】:

我会使用 date(expirationDate, unixepoch) 将其转换为 unix 时间,然后将其与现在的 unix 时间进行比较。这应该更容易,因为 unix 时间是一个整数。这是自 1970-01-01 以来的秒数。我在下面链接了另一个问题,该问题回答了如何在 C# 中获取 unix 时间。

How to get the unix timestamp in C#

【讨论】:

  • 为我工作,虽然它使一些看起来很有趣的代码。谢谢
猜你喜欢
  • 2016-08-24
  • 2014-08-25
  • 1970-01-01
  • 2012-02-02
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 2018-08-21
相关资源
最近更新 更多