From 3652f652d260bafc8669205d59866db792e56f47 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Mon, 1 Mar 2021 11:14:32 +0100 Subject: [PATCH] Bug 27821: Make sanitize_zero_date support datetime and timestamp Signed-off-by: Jonathan Druart (cherry picked from commit 3e3803ee20dc3dfc3d21e5cafa7a76159c8d4aba) Signed-off-by: Fridolin Somers --- installer/data/mysql/updatedatabase.pl | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 40d681016c..ffd967963e 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -23616,11 +23616,23 @@ sub CheckVersion { sub sanitize_zero_date { my ( $table_name, $column_name ) = @_; - $dbh->do(qq| - UPDATE $table_name - SET $column_name = NULL - WHERE CAST($column_name AS CHAR(10)) = '0000-00-00'; - |); + + my (undef, $datatype) = $dbh->selectrow_array(qq| + SHOW COLUMNS FROM $table_name WHERE Field = ?|, undef, $column_name); + + if ( $datatype eq 'date' ) { + $dbh->do(qq| + UPDATE $table_name + SET $column_name = NULL + WHERE CAST($column_name AS CHAR(10)) = '0000-00-00'; + |); + } else { + $dbh->do(qq| + UPDATE $table_name + SET $column_name = NULL + WHERE CAST($column_name AS CHAR(19)) = '0000-00-00 00:00:00'; + |); + } } exit; -- 2.20.1