从 MySQL 数据库的所有表中删除所有零日期

2023-12-11

我在 MySQL 中有很多表,其中 dateTime 列中包含零日期0000-00-00 00:00:00

使用某种管理设置,是否可以禁用零日期并用静态值替换所有零1-1-1900?

EDIT:

我正在从事数据库迁移工作,涉及将 100 多个 MySQL 表迁移到 SQL Server。

我可以通过设置来避免在每个表上手动执行脚本吗 数据库模式?


要更改现有值,您可以使用如下查询:

UPDATE tablename SET date_column = '1900-01-01' WHERE date_column = '0000-00-00';

如果您想自动执行 UPDATE 查询,您可以使用准备好的语句:

SET @sql_update=CONCAT_WS(' ', 'UPDATE', CONCAT(_schema, '.', _table),
                               'SET', _column, '=', '\'1900-01-01\'',
                               'WHERE', _column, '=', '\'0000-00-00\'');

PREPARE stmt FROM @sql_update;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

您可以循环遍历当前架构上所有表中声明为日期的所有列:

SELECT
  table_schema,
  table_name,
  column_name
FROM
  information_schema.columns
WHERE
  table_schema=DATABASE() AND data_type LIKE 'date%'

要循环遍历所有列,您可以使用存储过程:

DELIMITER //
CREATE PROCEDURE update_all_tables() BEGIN
  DECLARE done BOOLEAN DEFAULT FALSE;
  DECLARE _schema VARCHAR(255);
  DECLARE _table VARCHAR(255);
  DECLARE _column VARCHAR(255);
  DECLARE cur CURSOR FOR SELECT
                           CONCAT('`', REPLACE(table_schema, '`', '``'), '`'),
                           CONCAT('`', REPLACE(table_name, '`', '``'), '`'),
                           CONCAT('`', REPLACE(column_name, '`', '``'), '`')
                         FROM
                           information_schema.columns
                         WHERE
                           table_schema=DATABASE() AND data_type LIKE 'date%';

  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done := TRUE;

  OPEN cur;

  columnsLoop: LOOP
    FETCH cur INTO _schema, _table, _column;
    IF done THEN
      LEAVE columnsLoop;
    END IF;   

    SET @sql_update=CONCAT_WS(' ', 'UPDATE', CONCAT(_schema, '.', _table),
                                   'SET', _column, '=', '\'1900-01-01\'',
                                   'WHERE', _column, '=', '\'0000-00-00\'');

    PREPARE stmt FROM @sql_update;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;

  END LOOP columnsLoop;

  CLOSE cur;
END//
DELIMITER ;

请看一个例​​子here.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 MySQL 数据库的所有表中删除所有零日期 的相关文章

随机推荐

  • 常数的大O表示法

    我计算出我的运行时复杂度是4 这个的大O表示法是什么 例如 如果我的运行时复杂度是4 n那么它的大O O n 让我们宽松地看一下我们所说的定义f n is in O g n f n is in O g n 意思是c g n 是上界f n 于
  • 我如何要求对泛型类型的引用可以与泛型类型进行比较以确保相等?

    我正在尝试实现一种依赖于模幂的算法 我找不到任何适用于本机类型的模幂结构 例如u64 仅适用于 bigint 所以我想我应该编写一个标准重复平方法模幂 这是我想出的 fn powm base u64 exponent u64 modulus
  • FQL 中 CONTAINS() 的文档?

    最近有several 问题 posted在 Facebook SO 上使用CONTAINS in the WHERE条款 它的工作原理似乎类似于 Graph API 搜索功能 并且充当索引字段 对于 FQL 开发人员来说 这一切都是伟大的事
  • 如何在静态库中包含静态库?

    我在两个不同的文件夹中有 2 个静态库 libA and libB libB必须包括libA 我的主要 CMakeLists txt 是 add subdirectory libA add subdirectory libB 我的第一个错误
  • UITableViewCell 分组样式中的方形而不是圆角

    我希望分组的表格视图单元格具有方角 而不是默认的圆角 而且我不仅仅想使用图像来实现这种效果 是否可以 最简单的是 在你的tableView cellForRowAtIndexPath use cell backgroundView UIVi
  • PHP 和 FFMPEG - 执行智能视频转换

    我有一项异常困难的任务要执行 我以为这很容易 但我的所有努力都没有结果 我正在将上传到 php 脚本的视频从各种格式 avi mpg wmv mov 等 转换为单一 flv 格式 转换效果很好 但我遇到的问题是视频的分辨率 这是我当前正在运
  • 覆盖 WPF 模板时,是否必须单独覆盖每个主题的模板?

    我需要更改 WPF ComboBox 模板的一小部分 如果我复制 Luna 主题的现有模板并进行更改 那么最初一切都会正常工作 但如果用户有不同的主题 我的ComboBox保留了它的自定义主题 这显然是基于 Luna 所以看起来不合适 有没
  • 如何使用谓词从核心数据中获取偶数和奇数值

    我想从我的核心数据实体中获取偶数和奇数值 请查看下面的代码并进行更正 因为它会使应用程序崩溃 NSPredicate predicate if leadFilter rank isEqualToString Even predicate N
  • 在 Delphi 中为 MySQL 创建 UDF

    如何使用 Delphi 创建 MySQL 的 UDF 有人有代码模板吗 我希望将代码模板集成到 Delphi 版本 2007 及更高版本 中 因此我需要这些模板在有或没有 Unicode 支持的情况下都可以使用 首先 谷歌透露 文档 论坛主
  • 如何在 JavaScript 中将哈希值转换为单个对象?

    我有一个以下格式的对象数组 var log billkey Name billvalue ABC billkey Department billvalue Computer 我想将其转换为单个对象 例如 var log Name ABC D
  • Rails 3 提交标签 + html_safe

    这行代码有什么问题吗 这实际上产生 显然我的 html safe 调用没有做任何事情 背景 我在用着推特引导程序也字体真棒我本质上是想实现一个带有图标的提交按钮 为了扩展卢卡斯的答案 我需要一个按钮标签而不是输入 这段代码产生了我想要的效果
  • Maven 无法解决本地依赖关系

    我有一个 Maven 项目 其中包含一个带有外部 jar 文件的项目内存储库 我使用 install 命令将 jar 文件安装到项目内存储库中 当我检查存储库时 jar 文件已安装 我还在pom文件中添加了依赖配置 但是当我运行 mvn 编
  • 用 Dotrine 查询语言写“NOT IN”

    我有两张桌子company id and company has wtax company id 我需要获取所有不在其中的公司company has wtax桌子 原始 SQL 应该是这样的 SELECT id FROM company L
  • 如何在字典列表上动态构建分组依据

    我正在尝试对 IEnumerable 执行 groupby 问题是我在编译时不知道我想要对哪些字段进行分组 我已经发现另一个帖子在堆栈上解释了当类已知并且具有属性时如何执行此操作 但就我而言 我正在处理字典 并且键也仅在运行时已知 我的代码
  • Google Maps API:设置回调以添加标记/折线

    我正在尝试向生成的 Google 地图添加一条折线 折线的坐标是使用 jQuery getJSON 函数 从我的 Web 服务器上的 JSON 文件中获取的 但是 我在回调方面遇到了麻烦 我在一个单独的 JavaScript 文件中定义了三
  • UPDATE 查询的 WHERE 子句中的 SELECT 查询[重复]

    这个问题在这里已经有答案了 可能的重复 Mysql 错误 1093 无法在 FROM 子句中指定更新的目标表 将 SELECT 查询放入 UPDATE 查询的 WHERE 子句中时出现错误 我的查询是这样的 UPDATE subschedu
  • 您可以在使用 PHP 或 JavaScript 提交表单失败后重新填充文件输入吗?

    好的 这是场景 向用户呈现包含文件输入的表单 用户提交表单 由于某种原因 表单未通过验证 验证 向用户呈现的表单中突出显示了错误 文件输入现在为空 问题 是否可以使用用户最初选择的文件的路径重新填充文件输入 PHP 解决方案是理想的选择 但
  • 无法获取框架内容,未捕获 DOMException:阻止了原点为“null”的框架访问跨源框架

    我正在尝试使用 javascript 从我的一个框架访问 html 文档 但我得到了Uncaught DOMException Blocked a frame with origin null from accessing a cross
  • 如何使用 jQuery 将类添加到 Body 标记?

    让我澄清我的问题以及我正在寻找的解决方案 我正在使用 wikispaces com 我想使用 jQuery 动态地为每个页面添加一个唯一的主体类 以某种方式获取 URL 然后插入专门应用于该页面的唯一主体类 所以 这是我的维基空间中的示例网
  • 从 MySQL 数据库的所有表中删除所有零日期

    我在 MySQL 中有很多表 其中 dateTime 列中包含零日期0000 00 00 00 00 00 使用某种管理设置 是否可以禁用零日期并用静态值替换所有零1 1 1900 EDIT 我正在从事数据库迁移工作 涉及将 100 多个