首页 > 解决方案 > 如何在 MySQL 中插入空白日期/日期时间或占位符而不恢复为空白字符串?

问题描述

我正在为其做一些 SQL 工作的公司遇到了一些为 Unix 服务器创建的专有软件的问题。他们在 Windows 服务器上使用它,它导致 1 个问题是软件的致命错误。这是一家催收机构,账户上有几十个日期。某些日期是必需的(例如开放日期和冲销日期),但有几个日期或日期时间字段为空白,因此上传时为 NULL。设置软件后,每当您尝试在软件中执行任何操作时都会弹出以下错误:

'' is not a valid date in the lastpaymentdate DATETIME column

它已将 NULL(此字段中没有此特定帐户的日期)转换为空白字符串,因此我在该列中放置了一个占位符日期,然后出现如下错误:

'' is not a valid date in the firstvisit DATE column

所以现在我知道我要反对什么了。该软件要求所有日期为 NULL 或在其中包含正确格式的日期,以便真正执行任何操作。该软件对这个错误几乎没有用。

更改空白日期/日期时间列 NULL 只会转换为使软件崩溃的空白字符串。

所以我联系了创建该软件的机构,询问他们是否也有这个问题。有人告诉我,他们插入:

0000-00-00 or 0000-00-00 00:00:00

为了防止这种情况发生。

我试过了,但没有用。我花了很长时间才意识到为什么创建该软件的公司使用的是 Unix 服务器(可能使用 PostgreSQL 或 MySQL 10 或稍有不同的东西)。

我最终能够找到一个临时修复和输入:

1900-01-01 or 1900-01-01 12:00:00

一切正常。唯一的问题是 1900-01-01 / 12:00:00 不正确并导致合规性问题。所以这是一个临时修复,但不是一个好的修复。它与数据库中实际存在的日期太相似了。

所以我需要找到一些可以用作占位符的东西,除了 1900-01-01 12:00:00 和 0000-00-00 00:00:00 不起作用,NULL 也不起作用。

该软件是用 C# 编写的,如果这有什么不同的话。

标签: c#mysqldatedatetimemariadb

解决方案


推荐阅读