凡科网站怎么修改昨天做的网站,水果网站策划方案,搜索网站有哪些,无锡网站推广1.注意DESC关键字仅适用于在它前面的列名(birth)#xff1b;不影响species列的排序顺序。SELECT name, species, birth FROM petORDER BY species, birth DESC; ---desc只影响birth.先按照species升序列排序,species值相同的再按照birth降序排序2.日期计算MySQL提供了几个函数…1.注意DESC关键字仅适用于在它前面的列名(birth)不影响species列的排序顺序。SELECT name, species, birth FROM petORDER BY species, birth DESC; ---desc只影响birth.先按照species升序列排序,species值相同的再按照birth降序排序2.日期计算MySQL提供了几个函数可以用来计算日期例如计算年龄或提取日期部分。要想确定每个宠物有多大可以计算当前日期的年和出生日期之间的差。如果当前日期的日历年比出生日期早则减去一年。以下查询显示了每个宠物的出生日期、当前日期和年龄数值的年数字。mysql SELECT name, birth, CURDATE(),- (YEAR(CURDATE())-YEAR(birth))- - (RIGHT(CURDATE(),5)- AS age- FROM pet;----------------------------------------| name | birth | CURDATE() | age |----------------------------------------| Fluffy | 1993-02-04 | 2003-08-19 | 10 || Claws | 1994-03-17 | 2003-08-19 | 9 || Buffy | 1989-05-13 | 2003-08-19 | 14 || Fang | 1990-08-27 | 2003-08-19 | 12 || Bowser | 1989-08-31 | 2003-08-19 | 13 || Chirpy | 1998-09-11 | 2003-08-19 | 4 || Whistler | 1997-12-09 | 2003-08-19 | 5 || Slim | 1996-04-29 | 2003-08-19 | 7 || Puffball | 1999-03-30 | 2003-08-19 | 4 |----------------------------------------此处YEAR()提取日期的年部分RIGHT()提取日期的MM-DD (日历年)部分的最右面5个字符。比较MM-DD值的表达式部分的值一般为1或0如果CURDATE()的年比birth的年早则年份应减去1。整个表达式有些难懂使用alias (age)来使输出的列标记更有意义。尽管查询可行如果以某个顺序排列行则能更容易地浏览结果。添加ORDER BY name子句按照名字对输出进行排序则能够实现。mysql SELECT name, birth, CURDATE(),- (YEAR(CURDATE())-YEAR(birth))- - (RIGHT(CURDATE(),5)- AS age- FROM pet ORDER BY name;----------------------------------------| name | birth | CURDATE() | age |----------------------------------------| Bowser | 1989-08-31 | 2003-08-19 | 13 || Buffy | 1989-05-13 | 2003-08-19 | 14 || Chirpy | 1998-09-11 | 2003-08-19 | 4 || Claws | 1994-03-17 | 2003-08-19 | 9 || Fang | 1990-08-27 | 2003-08-19 | 12 || Fluffy | 1993-02-04 | 2003-08-19 | 10 || Puffball | 1999-03-30 | 2003-08-19 | 4 || Slim | 1996-04-29 | 2003-08-19 | 7 || Whistler | 1997-12-09 | 2003-08-19 | 5 |----------------------------------------为了按age而非name排序输出只要再使用一个ORDER BY子句mysql SELECT name, birth, CURDATE(),- (YEAR(CURDATE())-YEAR(birth))- - (RIGHT(CURDATE(),5)- AS age- FROM pet ORDER BY age;----------------------------------------| name | birth | CURDATE() | age |----------------------------------------| Chirpy | 1998-09-11 | 2003-08-19 | 4 || Puffball | 1999-03-30 | 2003-08-19 | 4 || Whistler | 1997-12-09 | 2003-08-19 | 5 || Slim | 1996-04-29 | 2003-08-19 | 7 || Claws | 1994-03-17 | 2003-08-19 | 9 || Fluffy | 1993-02-04 | 2003-08-19 | 10 || Fang | 1990-08-27 | 2003-08-19 | 12 || Bowser | 1989-08-31 | 2003-08-19 | 13 || Buffy | 1989-05-13 | 2003-08-19 | 14 |----------------------------------------可以使用一个类似的查询来确定已经死亡动物的死亡年龄。你通过检查death值是否是NULL来确定是哪些动物然后对于那些非NULL值的动物需要计算出death和birth值之间的差mysql SELECT name, birth, death,- (YEAR(death)-YEAR(birth)) - (RIGHT(death,5)- AS age- FROM pet WHERE death IS NOT NULL ORDER BY age;--------------------------------------| name | birth | death | age |--------------------------------------| Bowser | 1989-08-31 | 1995-07-29 | 5 |--------------------------------------查询使用death IS NOT NULL而非death ! NULL因为NULL是特殊的值不能使用普通比较符来比较以后会给出解释。参见3.3.4.6节“NULL值操作”。如果你想要知道哪个动物下个月过生日怎么办对于这类计算年和天是无关的你只需要提取birth列的月份部分。MySQL提供几个日期部分的提取函数例如YEAR( )、MONTH( )和DAYOFMONTH( )。在这里MONTH()是适合的函数。为了看它怎样工作运行一个简单的查询显示birth和MONTH(birth)的值mysql SELECT name, birth, MONTH(birth) FROM pet;------------------------------------| name | birth | MONTH(birth) |------------------------------------| Fluffy | 1993-02-04 | 2 || Claws | 1994-03-17 | 3 || Buffy | 1989-05-13 | 5 || Fang | 1990-08-27 | 8 || Bowser | 1989-08-31 | 8 || Chirpy | 1998-09-11 | 9 || Whistler | 1997-12-09 | 12 || Slim | 1996-04-29 | 4 || Puffball | 1999-03-30 | 3 |------------------------------------找出下个月生日的动物也是容易的。假定当前月是4月那么月值是4你可以找在5月出生的动物 (5月)方法是mysql SELECT name, birth FROM pet WHERE MONTH(birth) 5;-------------------| name | birth |-------------------| Buffy | 1989-05-13 |-------------------如果当前月份是12月就有点复杂了。你不能只把1加到月份数(12)上并寻找在13月出生的动物因为没有这样的月份。相反你应寻找在1月出生的动物(1月) 。你甚至可以编写查询不管当前月份是什么它都能工作。采用这种方法不必在查询中使用一个特定的月份DATE_ADD( )允许在一个给定的日期上加上时间间隔。如果在NOW( )值上加上一个月然后用MONTH()提取月份结果产生生日所在月份mysql SELECT name, birth FROM pet- WHERE MONTH(birth) MONTH(DATE_ADD(CURDATE(),INTERVAL 1 MONTH));完成该任务的另一个方法是加1以得出当前月份的下一个月(在使用取模函数(MOD)后如果月份当前值是12则“回滚”到值0)mysql SELECT name, birth FROM pet- WHERE MONTH(birth) MOD(MONTH(CURDATE()), 12) 1;注意MONTH返回在1和12之间的一个数字且MOD(something,12)返回在0和11之间的一个数字因此必须在MOD( )以后加1否则我们将从11月( 11 )跳到1月(1)。