Ste*_*ood 4 c# sql sqlite datetime dapper
我有一个包含日期字段的Sql数据库.
我使用Dapper更新数据库,如下所示:
const string sql = "UPDATE AdminDb.Users " +
"SET IsLoggedOn = 1, LastLoggedOn = @LastLoggedOn " +
"WHERE Username = @username";
var date = DateTime.UtcNow;
DatabaseConnectionBase.DatabaseConnection.Execute(sql, new { username, LastLoggedOn = date });
Run Code Online (Sandbox Code Playgroud)
我发现在实际更新之前打破我的烦恼时,日期变量读取30/3/2015 9:32:54然而当我运行更新时,数据库将日期保存为30/3/2015 10:32:54
由于英国昨天从GMT改为BST(UTC +1),我确信数据库似乎正试图弥补这个问题,因为此问题从未出现过.
我以为我已经通过使用DateTime.UtcNow属性来保存我的日期来避免这种问题.
验证用户时,这会导致严重问题.
根据另一个网站的建议,我尝试将日期格式化如下:
var date = DateTime.UtcNow.ToString("o");
Run Code Online (Sandbox Code Playgroud)
目的是强制日期为ISO-8601格式,但我没有运气.
有没有人有任何想法?
Cra*_*g A 13
Thomas Levesque在这里有解决方案:
// You just need to specify DateTimeKind=Utc in your connection string:
string connectionString = @"Data Source=D:\tmp\testSQLiteDate.db;DateTimeKind=Utc";
Run Code Online (Sandbox Code Playgroud)
这也发生在我身上。我所做的就是自己将日期时间序列化为字符串,然后将其添加为参数。
internal const string DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
cmd.Parameters.Add("@Threshold", DbType.DateTime).Value = threshold.ToString(DateTimeFormat);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2329 次 |
| 最近记录: |