请参见7.3.6日期和时间类型,了解每种类型所拥有的值的范围的描述以及指定日期和时间值的有效格式。
下面是一个使用日期函数的例子。以下查询选择所有记录,并且其date_col值在最近30天内:
mysqlSELECTsomethingFROMtable
其中TO _ DAYS(NOW())-TO _ DAYS(date _ col)=30;
星期几(日期)
返回日期的周索引(1=星期日,2=星期一,……… 7=星期六)。这些索引值对应于ODBC标准。
mysqlselectDAYOFWEEK(' 1998-02-03 ');
-3
工作日(日期)
返回日期的周索引(0=星期一,1=星期二,6=周日)。
mysqlselectWEEKDAY(' 1997-10-0422:23:00 ');
-5
mysqlselectWEEKDAY(' 1997-11-05 ');
-2
日月(日期)
date返回的月份日期在1到31的范围内。
mysqlselectDAYOFMONTH(' 1998-02-03 ');
-3
年某月某日
返回一年中的日期数,范围从1到366。
mysqlselectDAYOFYEAR(' 1998-02-03 ');
-34
月份(日期)
返回日期中的月份,范围从1到12。
mysqlselectMONTH(' 1998-02-03 ');
-2
日名(日期)
由date返回的周的名称。
mysqlselectDAYNAME(' 1998-02-05 ');
-“星期四”
月份名称(日期)
由date返回的月份名称。
mysqlselectMONTHNAME(' 1998-02-05 ');
-“二月”
季度(日期)
Date返回一年中的第几个季度,范围从1到4。
mysqlselectQUARTER(' 98-04-01 ');
-2
周(日期)
周(日期,第一天)
对于星期日是一周的第一天的地方,有一个参数返回日期的周数,范围从0到52。WEEK()形式中允许有两个参数
您可以指定一周是从周日开始还是从周一开始。如果第二个参数是0,一周从星期日开始,如果第二个参数是1,
从星期一开始。
MySQL select week(' 1998-02-20 ');
-7
mysqlselectWEEK('1998-02-20 '0);
-7
mysqlselectWEEK('1998-02-20 '1);
-8
年份(日期)
按日期返回的年份,范围从1000到9999。
mysqlselecyear(' 98-02-03 ');
-1998
小时(时间)
返回时间的小时值,范围从0到23。
mysqlselectHOUR(' 10:05:03 ');
-10
分钟(时间)
返回时间的分钟数,范围从0到59。
mysqlselecminute(' 98-02-0310:05:03 ');
-5
秒(时间)
时光倒流的秒数,范围从0到59。
MySQL select second(' 10:05:03 ');
-3
句点_ADD(P,N)
向阶段P添加n个月(格式为YYMM或YYYYMM)。以YYYYMM格式返回值。请注意,阶段参数p不是日期值。
mysqlselectPERIOD_ADD(9801,2);
-199803
PERIOD _ DIFF(P2 P1)
返回P1和P2之间的月数,格式应为YYMM或YYYYMM。请注意,期间参数P1和P2不是日期值。
mysqlselectPERIOD_DIFF(9802,199703);
-11
DATE_ADD(日期,间隔prtype)
DATE_SUB(日期,时间间隔类型)
ADDDATE(日期,间隔prtype)
子日期(日期,时间间隔类型)
这些函数执行日期操作。对于MySQL3.22,它们是新的。ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同义词。
在MySQL3.23中,可以使用and-代替DATE_ADD()和DATE_SUB()。(参见示例)日期是指定的开始日期。
DATETIME或DATE值,expr是一个表达式,指定开始日期加上或减去的间隔值,expr是一个字符串。它可以用作
“-”以负间隔开始。Type是指示应该如何解释表达式的关键字。EXTRACT(typeFROMdate)函数从日期开始
返回中的“类型”间隔。下表显示了type和expr参数之间的关系:type值表示预期的expr格式。
秒秒
分钟分钟
小时时间小时
日日
月月月
年年年
分钟_秒分钟和秒'分钟:秒'
小时分钟小时和分钟'小时:分钟'
日小时日和小时'日小时'
年_月年和月'年-月'
小时_秒小时,分钟,'小时:分钟:秒'
天_分钟天,小时,分钟'天小时:分钟'
天_秒天,小时,分钟,秒'天小时:分钟:秒'
MySQL expr格式中允许使用任何标点分隔符。将显示建议的分隔符。如果日期参数是日期值,并且您的计算仅
包含年、月和日部分(即没有时间部分),结果是一个日期值。否则,结果是日期时间值。
MySQL select ' 1997-12-3123:59:59 '间隔1秒;
-1998-01-0100:00:00
mysqlselectinterval 1天' 1997-12-31 '
-1998-01-01
MySQL select ' 1998-01-01 '-间隔1秒;
-1997-12-3123:59:59
mysqlSELECTDATE _ ADD(' 1997-12-3123:59:59 '
间隔1秒);
-1998-01-0100:00:00
mysqlSELECTDATE _ ADD(' 1997-12-3123:59:59 '
间隔一天);
-1998-01-0123:59:59
mysqlSELECTDATE _ ADD(' 1997-12-3123:59:59 '
间隔'1:1'分钟_秒);
-1998-01-0100:01:00
mysqlSELECTDATE _ SUB(' 1998-01-0100:00:00 '
间隔"11:1:1"天_秒);
-1997-12-3022:58:59
mysqlSELECTDATE _ ADD(' 1998-01-0100:00:00 '
时间间隔'-110 '天_小时);
-1997-12-3014:00:00
MySQL select date _ SUB(' 1998-01-02 '间隔31天);
-1997-12-02
mysqlSELECTEXTRACT(年份从' 1999-07-02 ');
-1999
MySQL select extract(YEAR _ month from ' 1999-07-0201:02:03 ');
-199907
mysqlSELECTEXTRACT(DAY _ minute from ' 1999-07-0201:02:03 ');
-20102
如果你指定太短的间隔值(不包括类型关键词期望的间隔部分),MySQL假设你省掉了间隔值的最左面部分。例如,
如果你指定一个类型是天_秒,值expr被希望有天、小时、分钟和秒部分。如果你象'1:10'这样指定值,
关系型数据库假设日子和小时部分是丢失的并且值代表分钟和秒。换句话