如何将 MM/dd/yyyy 中的日期转换为 MySQL 中的 yyyy-MM-dd?错误代码:1411。不正确的日期时间值:函数 str_to_date 的 ''
How to convert date from MM/dd/yyyy to yyyy-MM-dd in MySQL? Error Code: 1411. Incorrect datetime value: '' for function str_to_date
我有一个包含员工时间条目的大型数据集。当前日期格式为 MM/dd/yyyy。但是,我需要将所有日期转换为 yyyy-MM-dd 格式。
我试过以下方法:
更新human_resources.timekeeping
设置 Actual_Date = str_to_date(Actual_Date,'%d-%m-%Y');
收到错误消息错误代码:1411。不正确的日期时间值:函数 str_to_date.
我的SQL版本是5.7.18-log.
我尝试使用 SELECT 查看 SQL 模式 @@sql_mode; 我得到 NO ENGINE SUBSTITUTION .
我已尝试检索如下所示的值并且它工作正常。
Converting varchar mm/dd/yy to date format yyyy-mm-dd
但是,更新数据不起作用。我需要更新实际记录,而不是插入新记录。
希望有人能帮助我解决这个问题。提前致谢!
编辑:Actual_Date 的数据类型是 VARCHAR。
如果我的解释可能有点混乱,我们深表歉意。但我正在使用此数据集在 gridview 中显示和过滤时间条目。当我过滤日期时,例如 (01/15/2022-01/25/2022),也会显示 2021 年的数据。当我尝试手动将 sql 中的某些数据格式更改为 yyyy-MM-dd 时,我的代码似乎运行良好。问题是这个 table 中有很多数据,这就是为什么手动更新格式是不可能的。我需要做的第一件事是什么?对不起,这对我来说还是有点混乱。
你的分隔符是/不是-
%d-%m-%Y >> %d/%m/%Y
如果您已经考虑了以下事项,我深表歉意,但我认为它们值得一提。
鉴于您说这是一个“大型数据集”,我假设这是一个当前正在使用的 table。现有应用程序是否依赖于采用该字符串格式的 Actual_Date
?它是否依赖于 table 中固定数量的列?一些写得不好的应用程序在更改底层数据结构时可能会非常脆弱。
您可能需要考虑创建当前 table 的副本,修改副本的结构,并用与原始视图具有相同列和格式的视图替换原始视图。通过这种方式,您可以获得改进的数据,同时降低现有应用程序的风险。
在问题的标题和第一行中,您声明当前格式为 MM/dd/yyyy
Update human_resources.timekeeping Set Actual_Date = str_to_date(Actual_Date,'%m/%d/%Y');
我有一个包含员工时间条目的大型数据集。当前日期格式为 MM/dd/yyyy。但是,我需要将所有日期转换为 yyyy-MM-dd 格式。
我试过以下方法:
更新human_resources.timekeeping 设置 Actual_Date = str_to_date(Actual_Date,'%d-%m-%Y');
收到错误消息错误代码:1411。不正确的日期时间值:函数 str_to_date.
我的SQL版本是5.7.18-log.
我尝试使用 SELECT 查看 SQL 模式 @@sql_mode; 我得到 NO ENGINE SUBSTITUTION .
我已尝试检索如下所示的值并且它工作正常。 Converting varchar mm/dd/yy to date format yyyy-mm-dd
但是,更新数据不起作用。我需要更新实际记录,而不是插入新记录。
希望有人能帮助我解决这个问题。提前致谢!
编辑:Actual_Date 的数据类型是 VARCHAR。
如果我的解释可能有点混乱,我们深表歉意。但我正在使用此数据集在 gridview 中显示和过滤时间条目。当我过滤日期时,例如 (01/15/2022-01/25/2022),也会显示 2021 年的数据。当我尝试手动将 sql 中的某些数据格式更改为 yyyy-MM-dd 时,我的代码似乎运行良好。问题是这个 table 中有很多数据,这就是为什么手动更新格式是不可能的。我需要做的第一件事是什么?对不起,这对我来说还是有点混乱。
你的分隔符是/不是-
%d-%m-%Y >> %d/%m/%Y
如果您已经考虑了以下事项,我深表歉意,但我认为它们值得一提。
鉴于您说这是一个“大型数据集”,我假设这是一个当前正在使用的 table。现有应用程序是否依赖于采用该字符串格式的 Actual_Date
?它是否依赖于 table 中固定数量的列?一些写得不好的应用程序在更改底层数据结构时可能会非常脆弱。
您可能需要考虑创建当前 table 的副本,修改副本的结构,并用与原始视图具有相同列和格式的视图替换原始视图。通过这种方式,您可以获得改进的数据,同时降低现有应用程序的风险。
在问题的标题和第一行中,您声明当前格式为 MM/dd/yyyy
Update human_resources.timekeeping Set Actual_Date = str_to_date(Actual_Date,'%m/%d/%Y');