MDEV-9343 Copying from YEAR to DATE result in '0000-00-00' #3978
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When converting YEAR values to DATE/DATETIME, explicitly set month and day to zero (e.g., 2000 → 2000-00-00). Validate against SQL modes:
2000-00-00
ifNO_ZERO_IN_DATE
is disabledNO_ZERO_IN_DATE
is enabledDescription
This fix explicitly targets
YEAR
toDATE
orDATETIME
conversions (settingmonth=0
,day=0
).Queries involving
YEAR()
,MONTH()
, orDAY()
functions will change its behavior because they rely on the same conversion logic (number_to_datetime_or_date
,str_to_datetime_or_date_body
) used for date parsing.Release Notes
The server now preserves the year value when converting
YEAR
toDATE
orDATETIME
, resulting inYYYY-00-00
.How can this PR be tested?
Run
./mtr main.type_date
Basing the PR against the correct MariaDB version
main
branch.PR quality check