gpt4 book ai didi

c# - 从数据库查询 DateTime 字段时,我可以控制 DateTimeKind 吗?

转载 作者:太空狗 更新时间:2023-10-30 01:14:29 24 4
gpt4 key购买 nike

当我从 C# 查询涉及 DateTime 字段的 SqlServer 数据库时,返回的 System.DateTime 具有 Kind==Unspecified,这不足为奇因为 SqlServer DateTime 类型不保留任何时区信息。

我想知道是否有一种方法可以自动将这些值读取为本地值或通用值,而不是在读取查询结果后手动转换它们,这会在遗漏字段时引入更多错误的可能性。

典型的代码如下:

    using (var conn = ...)
using (var command = ...)
{
conn.Open();
var reader = command.ExecuteReader();
while (reader.Read())
{
DateTime dateField = (DateTime)reader["date"];
//dateField.Kind == Unspecified
}
}

最佳答案

DateTime dateField = DateTime.SpecifyKind((DateTime)reader["date"], DateTimeKind.Utc);

由于它不会持久保存在数据库中,因此您必须在自己的代码中检索时指定它,尽管您可以创建扩展方法,但 DataReader 中没有快捷方法。

public static class Helper{
public static DateTime GetDateTimeAsUtc(this IDataReader reader, string column){
return DateTime.SpecifyKind((DateTime)reader[column], DateTimeKind.Utc);
}
}

然后调用它

DateTime dateField = reader.GetDateTimeAsUtc("date");

关于c# - 从数据库查询 DateTime 字段时,我可以控制 DateTimeKind 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43227738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com