将 C# 日期时间转换为 0000-00-00 00:00:00 到 MySQL

Posted

技术标签:

【中文标题】将 C# 日期时间转换为 0000-00-00 00:00:00 到 MySQL【英文标题】:Convert C# Datetime to 0000-00-00 00:00:00 to MySQL 【发布时间】:2014-02-19 06:56:54 【问题描述】:

表结构中的日期时间字段为“非空”,但我想在不更改表结构的情况下将数据(MVC C# 日期时间)0000-00-00 00:00:00 存储到 mysql 表中。

我尝试这样做,但它但是错误!

Convert.ToDateTime("0000/00/00");

请帮忙,谢谢

【问题讨论】:

【参考方案1】:

.NET DateTime 的最小值是 0001 年 1 月 1 日; MySQL DATETIME 的最小值为“1000-01-01”,但在 SQL MODE 的情况下,可以插入“0000-00-00”作为 DATE,请参阅文档中的 NO_ZERO_DATE。

如果您想在 .NET DateTime 结构中存储“0000-00-00”,则使用“0001-01-01”,如果可以在表示层中更改此值。

如果你想在 MySQL 中存储 '0000-00-00',那么你应该检查 MySQL 服务器中的 SQL MODE -

SELECT * FROM information_schema.GLOBAL_VARIABLES
  WHERE VARIABLE_NAME = 'sql_mode';

来自文档:NO_ZERO_DATE - 在严格模式下,不允许“0000-00-00”作为有效日期。您仍然可以使用 IGNORE 选项插入零日期。当不在严格模式下时,日期会被接受,但会生成警告。

Server SQL Modes

【讨论】:

谢谢希望这会有所帮助:) +1 NO_ZERO_DATE - In strict mode, do not permit '0000-00-00' as a valid date【参考方案2】:

如果您询问如何使用 0000-00-00 00:00:00 创建 C# DateTime 对象 - 您不能,这是一个无效的日期。不过,您可以使用 DateTime.MinValue 。从记忆中 0000-01-01 00:00:00

为什么不使用 NULL?使用魔法值而不是 NULL 并不总是一个好主意。

【讨论】:

谢谢你让我知道它不能这样做:)【参考方案3】:

您需要将这些值作为字符串插入

这样

Create table tbl(dt datetime);
Insert into tbl values('0000-00-00 00:00:00');
SELECT CAST(dt as char) FROM tbl

Fiddle

【讨论】:

谢谢帮忙,有没有WCF数据服务的例子?

以上是关于将 C# 日期时间转换为 0000-00-00 00:00:00 到 MySQL的主要内容,如果未能解决你的问题,请参考以下文章

Java中把String转换为Date中的问题。

NHibernate 无法将 MySQL 日期/时间值转换为 System.DateTime

MySQL Workbench - 表数据导入向导将所有日期时间对象写入 0000-00-00 00:00:00

无法使用 0000-00-00 00:00:00 值将 MySQL.DateTime 转换为 System.DateTime

mysql的时间格式成了0000-00-00,怎么在库里改呢?

无法将“0000-00-00 00:00:00”转换为 TIMESTAMP