基于出生日期判断2025-01-01时是否年满18岁及日期格式处理
判断2025年1月1日是否年满18岁的解决方案
针对你的需求(出生日期列格式为dd/mm/yyyy,判断2025年1月1日当天是否年满18岁),核心思路是先将字符串格式的出生日期转换为标准日期类型,再与2007年1月1日(2025-18=2007)进行比较——若出生日期早于或等于该日期,则当天已年满18岁。
关键问题修正
你之前尝试用strftime转成数字格式比较的方式,在日期格式不规范(比如日/月是单数字)时容易出错,更可靠的做法是先把dd/mm/yyyy字符串转为标准YYYY-MM-DD格式的日期,再做比较。
SQLite 实现示例
假设你的表名为your_table,出生日期列名为date_of_birth,可以用以下查询:
SELECT date_of_birth, CASE -- 将dd/mm/yyyy字符串拆分为年-月-日,再转为日期类型 WHEN date(substr(date_of_birth, 7, 4) || '-' || substr(date_of_birth, 4, 2) || '-' || substr(date_of_birth, 1, 2)) <= '2007-01-01' THEN '已年满18岁' ELSE '未满18岁' END AS is_adult_status FROM your_table;
- 拆分逻辑:
substr(date_of_birth,7,4)提取年份(dd/mm/yyyy的第7-10位),substr(date_of_birth,4,2)提取月份(第4-5位),substr(date_of_birth,1,2)提取日期(第1-2位),拼接成标准日期格式后用date()函数转换。
其他SQL方言参考(如MySQL)
如果使用MySQL,可以直接用STR_TO_DATE函数解析日期格式:
SELECT date_of_birth, CASE WHEN STR_TO_DATE(date_of_birth, '%d/%m/%Y') <= '2007-01-01' THEN '已年满18岁' ELSE '未满18岁' END AS is_adult_status FROM your_table;
内容的提问来源于stack exchange,提问作者hle00001
相关产品推荐
相关产品推荐

