gpt4 book ai didi

c# - 字符串未被识别为有效的日期时间,源日期为 0000-00-00 00 :00:000

转载 作者:行者123 更新时间:2023-11-29 16:42:29 25 4
gpt4 key购买 nike

更新

显然不是由0000-00-00 00:00:000引起的,当值为2016-04-21 00:00:00.000<时程序出错 知道原因是什么吗?

<小时/>

我有一个 VS C# 程序,它将从 MSSQL 中进行 SELECT,然后将 INSERT/ON DUPLICATE UPDATE 插入到 MySQL 数据库中。我有一个日期时间为 NULL 的特定行,我的 MSSQL 查询和结果是:

查询

SELECT UserID,LastPasswordDate,
CASE WHEN LastPasswordDate IS NULL THEN '0000-00-00 00:00:00:000'
ELSE convert(varchar, LastPasswordDate, 121) END as LastPasswordDate2 from users
order by LastPasswordDate

结果

enter image description here

C#代码

string LastPasswordDate = row["LastPasswordDate"].ToString(); // Or
//DateTime LastPasswordDate = DateTime.ParseExact(row["LastPasswordDate"].ToString(), "yyyy-MM-dd HH:mm:ss:fff", null);

insertUserCommand.Parameters.AddWithValue("@LastPasswordDate", LastPasswordDate);
insertUserCommand.ExecuteNonQuery();
insertUserCommand.Parameters.Clear();
tran.Commit();

我尝试使用 C# 转换,但不断收到与上述标题相同的错误消息

最佳答案

您应该知道的第一件事是 datetime MySQL 中数据类型的最小值为 1000-01-01 00:00:00.000,而不是用作“零”的 0000-00-00 00:00:00.000对无效日期使用日期时间转换时的值显示。二、DateTime.MinValue最小值为 0001-01-01 00:00:00.000,不适合前面提到的 MySQL 的“零”值转换。

如果 MySQL DB 中的目标列具有可为空的 datetime 数据类型,则应使用 TryParseExact()当无法解析“零”日期时,使用DBNull.Value分配空值:

DateTime date;
DateTime? LastPasswordDate;

if (DateTime.TryParseExact(row["LastPasswordDate"].ToString(), out date))
{
LastPasswordDate = date;
}
else
{
LastPasswordDate = null;
}

insertUserCommand.Parameters.AddWithValue("@LastPasswordDate", (object)LastPasswordDate ?? DBNull.Value);
insertUserCommand.ExecuteNonQuery();

但在我看来,最好从 T-SQL 查询返回空值并使用 Convert.IsDBNull() 检查它。 ,然后使用 DBNull.Value 将空值分配给数据库列:

DateTime? LastPasswordDate = !Convert.IsDBNull(row["LastPasswordDate"]) ? DateTime.ParseExact(row["LastPasswordDate"].ToString(), "yyyy-MM-dd HH:mm:ss:fff", null) : null;

insertUserCommand.Parameters.AddWithValue("@LastPasswordDate", (object)LastPasswordDate ?? DBNull.Value);
insertUserCommand.ExecuteNonQuery();

关于c# - 字符串未被识别为有效的日期时间,源日期为 0000-00-00 00 :00:000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53276347/

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