MySQL:修改字段的输出以进行计算

时间:2014-01-29 05:01:58

标签: mysql sql

我知道从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';

1 个答案:

答案 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。这样您就可以轻松地在其上应用日期特定功能进行任何计算。