mysql str_to_date判断Y-m-d和Y/m/d

用正则判断日期只能判断样式不能判断是否真正的合法

我们可以使用str_to_date

要在 MySQL 中使用 STR_TO_DATE() 函数判断日期字符串是否符合两种不同的格式,例如 'YYYY-MM-DD''YYYY/MM/DD',你可以使用条件逻辑来处理。以下是如何实现这种检查的示例:

示例

假设你有一个表 events,其中有一列 event_date 存储日期字符串。你希望检查这些字符串是否符合 'YYYY-MM-DD''YYYY/MM/DD' 格式,并计算有效记录的数量。

sqlCopy Code
SELECT 
    COUNT(*) AS ValidDateCount
FROM 
    events
WHERE 
    (STR_TO_DATE(event_date, '%Y-%m-%d') IS NOT NULL)
    OR 
    (STR_TO_DATE(event_date, '%Y/%m/%d') IS NOT NULL);

解释

  • STR_TO_DATE(event_date, '%Y-%m-%d'):尝试将 event_date 列的值转换为 'YYYY-MM-DD' 格式的日期。
  • STR_TO_DATE(event_date, '%Y/%m/%d'):尝试将 event_date 列的值转换为 'YYYY/MM/DD' 格式的日期。
  • IS NOT NULL:确保转换后的结果是有效日期(即转换成功)。

使用 OR 逻辑来处理两种格式,可以确保无论哪种格式的日期都能被正确识别和计算。

SELECT CASE WHEN STR_TO_DATE('2024-09-14', '%Y-%m-%d') IS NOT NULL THEN 'Valid Date' ELSE 'Invalid Date' END AS DateStatus;

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: