【问题标题】:Insert Date time to SQLite Database Xamarin.Forms将日期时间插入 SQLite 数据库 Xamarin.Forms
【发布时间】:2018-11-05 17:45:59
【问题描述】:

我想更新列的日期时间,但这是插入的数据01/01/0001 00:00:00。我可以获得当前的日期时间,但是当将其插入我的 sqlite 数据库时,结果是 01/01/0001 00:00:00。我该如何解决?

var current_datetime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:00");
var current = Convert.ToDateTime(current_datetime);

string retailer_group_sql = "UPDATE tblRetailerGroup SET "'LastSync = '" + current + "', MobileUpdate = '" + current + "' WHERE RetailerCode = '" + retailerCode + "'";
await conn.ExecuteAsync(retailer_group_sql);

【问题讨论】:

  • LastSync/MobileUpdate 使用哪种列类型?又是什么原因把一个DateTime转成字符串current_datetime,然后再转回来呢?
  • @SushiHangover 列类型是日期时间,我将日期时间转换为字符串的原因是我需要某种日期时间格式。我将其转换回来是因为我认为数据类型应该与列类型相同,对吧?还是我错了?
  • A DateTime 是 DateTime 类型,句号,它不会因为您使用“Convert.ToDateTime”而改变内部存储结构。

标签: xamarin xamarin.forms


【解决方案1】:

避免使用Convert.ToDateTime,因为这很慢并且会导致问题。主要是,它不会抛出异常,也不会告诉您输入字符串是否有效并且会成功转换(因此您会看到那个奇怪的日期)。您最好的选择是使用DateTime.TryParseDateTime.ParseExact。请参阅 Microsoft Docs 中的Converting Strings to DateTime Objects

回到手头的问题,您可能会受益于将 DateTime 对象作为 Int32 对象存储在 SQLite 数据库中。您可以convert your DateTime to a Unix timestamp 并存储该值,而不是字符串。这在内存上应该更容易,并且您不会遇到将 DateTime 转换为 String 并返回的麻烦。此外,它与文化无关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-28
    • 2023-04-04
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    相关资源
    最近更新 更多