1、要求需要计算当前日期的年和出生日期之间的差,如果当前日期的日历年比出生日期早,则减去一年(为什么要减去一年呢?)mysql>select name, birth, curdate(),
    ->(year(curdate)-year(birth)) - (right(curdate, 5)<right(birth, 5))
    ->as age
    ->from pet;
(year(curdate)-year(birth)) - (right(curdate, 5)<right(birth, 5)) 是不是确定(right(curdate, 5)<right(birth, 5))得出的结果不是应该为一个布尔值吗?那么中间的减号是什么意思?

解决方案 »

  1.   

    为什么减一年不知道,不过后面的你可以看下“SELECT 0<1”的结果是什么 
      

  2.   

    分两部分1。
    (year(curdate)-year(birth) 这个判断差的年数  比如1992年出生  则是20
    2。
    right(curdate, 5)<right(birth, 5) 这个值是0或者1    如果过了今天已过生日 则是20-0  如果还没过生日  则是20-1=19  
      

  3.   

    SELECT 3-(1<2),1<2
    看看结果
    如果right(curdate, 5)<right(birth, 5),则结果为1,
    year(curdate)-year(birth)-1
      

  4.   

    减一年那个看了一下,应该是因为出生日期和curdate都是精确到MM-DD的,所以除了年,MM-DD的差也应该计算在内,所以当出生日期的MM-DD没有超过当前MM-DD时,前面用年算出来的差得减1