我知道从DOB计算年龄相对简单但我在数据库中遇到了不同数据输入格式的问题。此外,我知道使用PHP可以更容易,但我不知道PHP,只能使用MySQL。
输入数据库的DOB输入为“月/日/年”或“00/00/0000”。但是,在计算今天的日期时,日期将被格式化为“年 - 月 - 日”或“0000-00-00”。此外,放置在DOB字段中的月份可以是一个月号(1/01/1999)或两个月号(01/01/1999),因此它不一致。
我正在尝试使用以下内容来利用CONCAT,SUBSTRING和LOCATE以更适合年龄计算的格式输出DOB。我想我很亲密但不太相似。非常感谢任何帮助。
SELECT
CONCAT(SUBSTRING(APPU_DOB,-4,4),'-', SUBSTRING(APPU_DOB,LOCATE('/', APPU_DOB),1),'-',SUBSTRING(APPU_DOB,4,2))
FROM APPU_APP_USER
JOIN APPL_APP ON APPU_APPL_ID = APPL_ID
WHERE DATE_FORMAT(APPL_CREATE_DT, '%Y-%M-%D') >= '2014-01-01';
答案 0 :(得分:0)
而不是Concat
使用str_to_date
功能。
select str_to_date( appu_dob, '%m/%d/%Y' ) as 'dob';
在1/01/1999
上,它会返回值为1999-01-01
的有效日期格式化对象
您可以在其他日期字符串上使用它,其中包含单个或两位数的日期或月份数字。
注意 :要表示或引用一个月,请使用格式模式字符串格式的小案例m
但不要使用大写M
。
您最好将appu_dob
字段的数据类型重新定义为date
。这样您就可以轻松地在其上应用日期特定功能进行任何计算。