《mysqlAPI--日期和时间函数.docx》由会员分享,可在线阅读,更多相关《mysqlAPI--日期和时间函数.docx(65页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第65页 共65页12.7。日期和时间函数本节描述的功能,可用于操作时间值。见第11.3节“日期和时间类型”,每个日期和时间不同的值和有效的格式,在该值可以被指定的范围的说明。表12.13。日期/时间函数名描述(录入)添加日期值的时间值(间隔)(ADDTIME)添加时间(CONVERT_TZ)转换从一个时区到另一个CURDATE()返回当前日期CURRENT_DATE(),CURRENT_DATE同义词CURDATE()CURRENT_TIME(),CURRENT_TIME同义词CURTIME()CURRENT_TIMESTAM
2、P(),CURRENT_TIMESTAMP别名为NOW()CURTIME()返回当前时间DATE_ADD()添加日期值的时间值(间隔)DATE_FORMAT()指定的日期格式DATE_SUB()从日期减去一个时间值(间隔)DATE()提取日期或日期时间表达式的日期部分DATEDIFF()两个日期相减天()同义DAYOFMONTH()(DAYNAME)返回(周一至周五)的名称(DAYOFMONTH)返回的月份的日期(0-31)DAYOFWEEK()回到平日的说法指数(DAYOFYEAR)当天返回的一年(1-366)(摘录)提取部分日期(FROM_DAYS)转换天数日期FROM_UNIXTIME(
3、)日期格式的UNIX时间戳(GET_FORMAT)返回的日期格式字符串HOUR()提取小时LAST_DAY在每月的最后一天返回参数LOCALTIME(),LOCALTIME别名为NOW()LOCALTIMESTAMPLOCALTIMESTAMP()别名为NOW()(MAKEDATE)创建日期从今年年中的一天MAKETIME(MAKETIME)(MICROSECOND)返回参数微秒MINUTE()从参数返回分钟月()返回通过之日起一个月(MONTHNAME)返回该月的名称NOW()返回当前的日期和时间(PERIOD_ADD)添加到一年一个月期间(PERIOD_DIFF)返回期间之间的月数QUAR
4、TER()返回日期参数季度(SEC_TO_TIME)秒转换到HH:MM:SS格式第二()返回秒(0-59)(STR_TO_DATE)转换一个字符串的日期(SUBDATE)DATE_SUB()的同义词时,有三个参数调用(SUBTIME)减去时间SYSDATE()返回函数执行的时间,(TIME_FORMAT)随着时间的格式(TIME_TO_SEC)返回参数转换成秒TIME()通过提取的时间部分的表达timeDiff中()减去时间TIMESTAMP()随着一个参数,这个函数返回的日期或日期时间表达式;两个参数,参数的总和(TIMESTAMPADD)添加时间间隔为datetime表达式(TIMESTA
5、MPDIFF)减去的时间间隔从datetime表达式TO_DAYS()返回日期参数转换为天TO_SECONDS()返回0年以来的秒数转换为日期或日期时间参数UNIX_TIMESTAMP()返回UNIX时间戳(UTC_DATE)返回当前UTC日期(UTC_TIME)返回当前的UTC时间(UTC_TIMESTAMP)返回当前的UTC日期和时间(周)返回的周数周日()返回平日指数(WEEKOFYEAR)返回日期的日历周(0-53)YEAR()返回一年(YEARWEEK)返回年和周下面是一个使用日期函数的例子。下面的查询选择与date_col的值从过去的30天之内的所有行:mysql的SELECT 东
6、西 FROM tbl_name表 - DATE_SUB(CURDATE(),间隔30天):SELECT DAYOFMONTH(2001-11-00),MONTH(2005-00-00); - 0,0其他功能不完整的日期预计完成日期和返回NULL。这些措施包括执行日期运算或日期的名称,地图部件的功能。例如:的mysql SELECT DATE_ADD(2006-05-00,间隔1天); - NULL的mysql:SELECT DAYNAME(2006-05-00); - NULL注意从MySQL 5.5.16到5.5.20,处理的日期相关的断言的变化引起的多种功能,以更加严格的通过日期()函数值
7、作为其参数,并拒绝不完整的日期,用了一天的一部分为零。这些功能由于这种变化总体供货状 态系列MySQL 5.5中的日期处理行为,改变5.5.21恢复。 录入时间(日期,间隔表达式单元),录入(表达式,天)当间隔第二个参数的形式调用,录入()是DATE_ADD()的代名词。相关的功能SUBDATE()DATE_SUB()的代名词。对于在间隔单元参数的信息,请参阅DATE_ADD()的讨论。的mysql SELECT DATE_ADD(2008-01-02,间隔31天); - 2008-02-02mysql SELECT的录入(2008-01-02,间隔31天); - 2008-02-02当天的第
8、二个参数的形式调用时,MySQL将要添加到表达式作为一个整数天数。mysql SELECT的录入(2008-01-02,31); - 2008-02-02 ADDTIME(表达式1,表达式2)录入时间()将表达式2表达式1,返回结果。expr1的是一个时间或日期时间表达式,表达式2是一个时间表达式。mysql SELECT的ADDTIME(2007-12-31 23:59:59.999999,1 1:1:1.000002); - 2008-01-02 01:01:01.000001mysql SELECT的ADDTIME(01:00:00.999999,02:00:00.999998)的; -
9、 03:00:01.999997 CONVERT_TZ(DT,FROM_TZto_tz)CONVERT_TZ()转换给予FROM_TZ时区的datetime值DT给予to_tz的时区,并返回所产生的价值。时区被指定为10.6节,“MySQL服务器时区支持”。如果参数是无效的,这个函数返回NULL。如果该值下降的TIMESTAMP类型支持的范围时,从FROM_TZ转换为UTC,没有发生转换。时间戳范围中描述第11.1.2节“日期和时间类型概述”。mysql SELECT的CONVERT_TZ(2004-01-01 12:00:00,北京时间,MET); - 2004-01-01 13:00:00
10、mysql SELECT的CONVERT_TZ(2004-01-01 12:00:00,+00:00,+10:00); - 2004-01-01 22:00:00注意要使用如“符合”或“欧洲/莫斯科命名的时区,时区表,必须正确设置。参见10.6节,“MySQL服务器时区支持”,说明。 CURDATE()作为一种价值YYYY-MM-DD或YYYYMMDD格式返回当前日期,取决于该函数是在一个字符串或数字上下文中使用。mysql SELECT的CURDATE(); - 2008-06-13的mysql SELECT CURDATE()+ 0; - 20080613 CURRENT_DATE,CUR
11、RENT_DATE()CURRENT_DATECURRENT_DATE()CURDATE(同义词)。 CURRENT_TIME,CURRENT_TIME()CURRENT_TIME和CURRENT_TIME()是CURTIME()的同义词。 CURRENT_TIMESTAMP,CURRENT_TIMESTAMP()CURRENT_TIMESTAMP和CURRENT_TIMESTAMP()的同义词NOW()。 CURTIME()返回当前时间值HH:MM:SS或HHMMSS.uuuuuu格式,这取决于是否使用此函数在一个字符串或数字上下文。该值表示在当前的时区。mysql SELECT的CURTI
12、ME(); - 23:50:26的mysql SELECT CURTIME()+ 0; - 235026.000000 DATE(expr中)提取日期或日期时间表达式expr中的日期部分。mysql SELECT的DATE(2003-12-31 01:02:03); - 2003-12-31 DATEDIFF(表达式1,表达式2)DATEDIFF()返回表达式1-表达式2表示从一个日期的天中的一个值。表达式1和表达式2日期或日期和时间表达式。只有日期部分的值,在计算中使用。的mysql SELECT DATEDIFF(2007-12-31 23:59:59,2007-12-30); - 1的m
13、ysql SELECT DATEDIFF(2010-11-30 23:59:59,2010-12-31); - -31 DATE_SUB(日期,间隔表达式单元)DATE_ADD(日期区间表达式单元),这些函数执行日期运算。日期参数指定起始日期或日期时间值表达式是一个表达式,指定要添加或减去从起始日期间隔值表达式是一个字符串,它可能会开始用“-“表示负间隔。单位是一个关键字表示单位的表达应被解释。间隔关键字和单位符不区分大小写。下表显示了预期的expr的参数形式的每个单元的值。单位价值预期expr的格式MICROSECONDMICROSECONDS第二秒MINUTE分钟小时小时天天周周一个月个月
14、一季宿舍年度年SECOND_MICROSECONDSECONDS.MICROSECONDSMINUTE_MICROSECOND“分:SECONDS.MICROSECONDS的MINUTE_SECOND“分:秒”HOUR_MICROSECOND“小时:分钟:SECONDS.MICROSECONDSHOUR_SECOND“小时:分钟:秒”HOUR_MINUTE小时:分钟DAY_MICROSECOND“日小时:分钟:SECONDS.MICROSECONDSDAY_SECOND天小时:分钟:秒“DAY_MINUTE“天小时:分钟DAY_HOUR天YEAR_MONTH年个月返回值取决于参数: 的DATE
15、TIME如果第一个参数是一个DATETIME或TIMESTAMP值,如果第一个参数是一个日期和单位值用小时,分钟或秒。 否则字符串。为了确保结果是DATETIME,您可以使用CAST()的第一个参数转换成DATETIME。MySQL的允许任何标点分隔符expr的格式。表中显示的是建议的分隔符。如果日期参数是一个DATE值并且你的计算只涉及YEAR,MONTH和DAY部分(即,没有时间部分),结果是一个DATE值。否则,结果是一个DATETIME值。日期算术也可以进行+或-运算符一起使用间隔:日期 + INTERVAL expr的 单元日期 -间隔expr的 单元允许区间表达式单元两侧的“+“操
16、作符的另一边,如果表达式是日期或日期时间值。-运营商,间隔表达式单元只允许在右侧,因为它是没有意义的,要减去的间隔日期或日期时间值。的mysql SELECT 2008-12-31 23:59:59+间隔1秒; - 2009-01-01 00:00:00mysql SELECT的间隔1天+ 2008-12-31; - 2009-01-01mysql SELECT的2005-01-01 -间隔1秒; - 2004-12-31 23:59:59的mysql SELECT DATE_ADD(2000-12-31 23:59:59, - 间隔1秒); - 2001-01-01 00:00:00的mys
17、ql SELECT DATE_ADD(2010-12-31 23:59:59, - 间隔1天); - 2011-01-01 23:59:59的mysql SELECT DATE_ADD(“2100-12-31 23:59:59, - 间隔1:1MINUTE_SECOND); - 2101-01-01 00:01:00mysql SELECT的DATE_SUB(2005-01-01 00:00:00, - 区间1 1:1:1DAY_SECOND),; - 2004-12-30 22:58:59的mysql SELECT DATE_ADD(1900-01-01 00:00:00 - 间隔-1DAY
18、_HOUR); - 1899-12-30 14:00:00mysql SELECT的DATE_SUB(1998-01-02,间隔31天); - 1997-12-02的mysql SELECT DATE_ADD(1992-12-31 23:59:59.000002, - 间隔1 .999999SECOND_MICROSECOND),; - 1993-01-01 00:00:01.000001如果你指定太短的间隔值(不包括所有的间隔部分,将有望从单位关键字),MySQL假设你已经离开的时间间隔值的最左边的部分。例如,如果您指定一个单位DAY_SECOND,expr的价值预计将有天,小时,分钟和秒部
19、分。如果你指定一个值,如1:10,MySQL假设日子和小时部分是丢失的并且值代表分钟和秒。换言之,1:10DAY_SECOND被解释在这样一种方式,它是相等于1:10MINUTE_SECOND的。这是类似于来让MySQL解释TIME值表示经过的时间,而不是一天的时间。因为被视为一个字符串表达式,要小心,如果你指定一个非字符串值间隔。例如,指定的间隔HOUR_MINUTE,6/4的计算结果为1.5000,被视为1个小时,5000分钟mysql SELECT的6/4; - 1.5000的mysql SELECT DATE_ADD(2009-01-01,间隔6/4 HOUR_MINUTE),; -
20、2009-01-04 12:20:00为了确保解释你期望的时间间隔值,CAST()操作都可以使用。治疗6/4为1小时,5分钟,将它转换为一个十进制值与一个单一的小数位数:的mysql SELECT CAST(6/4为十进制(3,1); - 1.5的mysql SELECT DATE_ADD(1970-01-01 12:00:00, - 间隔CAST(6/4为十进制(3,1)HOUR_MINUTE); - 1970-01-01 13:05:00如果加上或减去一个日期值包含时间部分的东西,结果被自动转换为datetime值:的mysql SELECT DATE_ADD(2013-01-01,间隔1
21、天); - 2013-01-02的mysql SELECT DATE_ADD(2013-01-01,间隔1小时); - 2013-01-01 01:00:00如果您添加个月,YEAR_MONTH的的,或者制造年份,和所得到的日期有一个是大于新的一个月的最大天的天,天被调整到新的月份最大天:的mysql SELECT DATE_ADD(2009-01-30,间隔1个月); - 2009-02-28日期算术运算需要完整的日期和不工作不完整的日期,例如2006-07-00或严重畸形的日期:的mysql SELECT DATE_ADD(2006-07-00,间隔1天); - NULL的mysql SE
22、LECT 2005-03-32+间隔1个月; - NULLDATE_FORMAT(日期,格式)格式的日期值的格式字符串。也可以使用下面的说明符的格式的字符串中。格式说明符“字符前需要。符描述A(孙.星期六)缩写名称(周一至周五)B缩写的月份名称(1.12)C月,数字(0.12)D日当月用英文后缀(第0,第1,第2,第3,.)D月的一天,数字(00.31)E月的一天,数字(0.31)F微秒(000000.999999)H小时(00.23)H小时(01.12)我小时(01.12)i个分钟,数字(00.59)J一年中的天(001.366)K小时(0.23)L小时(1.12)M月份名(12月.)M月,
23、数字(00.12)对AM或PMR时间,12小时(HH:MM:SS其次是上午或下午)S秒(00.59)s的秒(00.59)T时间,24小时(HH:MM:SS)U星期(00.53),星期日是一周的第一天U周(00.53),其中周一的一周的第一天是VX用周(01.53),星期日是一周的第一天;V用星期(01.53),星期一是一周的第一天;W平日名称(星期日.星期六)W本周日(0=周日.6=星期六)XV用的一周星期日是一周的第一天,数字,四个数字的年份;X新年的一周,周一是一周的第一天,数字,四位;V使用Y新年,数字,四个数字Y新年,数字(两位数)文字“字符xx,任何“X“未在上面列出范围的月和日符零
24、开始由于这样的事实,MySQL允许存储的不完整的日期,例如2014-00-00。所使用的语言是日期和月份名称和缩写控制的的lc_time_names系统变量的值(10.7节,“MySQL服务器区域的支持”)。DATE_FORMAT()返回一个字符串,以便它可以返回月和星期名包含非ASCII字符的字符集和整理,给出的character_set_connection和collation_connection是的。的mysql SELECT DATE_FORMAT(2009-10-04 22:23:00,WMY); - 周日10月2009年的mysql SELECT DATE_FORMAT(2007
25、-10-04 22:23:00,H:I:S); - 22:23:00的mysql SELECT DATE_FORMAT(1900-10-04 22:23:00 - DYADMBJ); - 4日星期四04 00 10 10月277的mysql SELECT DATE_FORMAT(1997-10-04 22:23:00 - HKIRTSW); - 22 22 10 10:23:00 PM 22:23:00 00 6的mysql SELECT DATE_FORMAT(1999-01-01,XV); - 1998 52的mysql SELECT DATE_FORMAT(2006-06-00,D);
26、- 00DATE_SUB(日期,间隔表达式单元)见描述DATE_ADD()。天(日)天()是的代名词DAYOFMONTH()。DAYNAME(日期)返回日期(周一至周五)的名称。语言的名称用于控制的的lc_time_names系统变量的值(10.7节,“MySQL服务器区域的支持”)。的mysql:SELECT DAYNAME(2007-02-03); - 星期六DAYOFMONTH(日)返回当天的日期为一个月,范围为1至31,或0的日期,例如0000-00-00或2008-00-00,有一个零日部分。的mysql:SELECT DAYOFMONTH(2007-02-03); - 3DAYOF
27、WEEK(日期)返回日期(1=星期天,2=周一,.,7=周六)平日指数。这些索引值对应于ODBC标准。mysql SELECT的DAYOFWEEK(2007-02-03); - 7DAYOFYEAR(日期)返回当天的日期,范围为1至366。的mysql:SELECT DAYOFYEAR(2007-02-03); - 34提取(单位FROM日期)EXTRACT()函数使用同种单位说明DATE_ADD()或DATE_SUB(),但提取部分之日起,而不是执行日期算术。mysql SELECT的提取物(YEAR从2009-07-02); - 2009年的mysql SELECT EXTRACT(YEA
28、R_MONTH从2009-07-02 01:02:03); - 200907的mysql SELECT EXTRACT(DAY_MINUTE从2009-07-02 01:02:03); - 20102mysql SELECT的提取物(微秒 - 2003-01-02 10:30:00.000123); - 123FROM_DAYS()鉴于每天数,返回一个DATE值。MYSQL:SELECT FROM_DAYS(730669); - 2007-07-03慎用旧日期中使用FROM_DAYS()。它的目的不是用于来临之前的公历(1582)的值。参见12.8节,“什么是日历MySQL使用?”。FROM_
29、UNIXTIME(UNIX_TIMESTAMP),FROM_UNIXTIME(UNIX_TIMESTAMP格式),返回一个表示UNIX_TIMESTAMP参数值YYYY-MM-DD HH:MM:SS或YYYYMMDDHHMMSS.uuuuuu格式,这取决于是否使用函数在一个字符串或数字上下文。该值表示当前的时区。UNIX_TIMESTAMPUNIX_TIMESTAMP()函数产生一个内部的时间戳值,如。如果给定的格式,其结果是根据格式的字符串,它是用来DATE_FORMAT()函数中列出的条目相同的方式格式化。的mysql SELECT FROM_UNIXTIME(1196440219); -
30、 2007-11-30 10:30:19的mysql SELECT FROM_UNIXTIME(1196440219)+ 0; - 20071130103019.000000的mysql SELECT FROM_UNIXTIME(UNIX_TIMESTAMP() - YDMH:I:SX); - 2007十时30分59秒11月30日2007“注:如果您使用UNIX_TIMESTAMP()和FROM_UNIXTIME()TIMESTAMP值和Unix的时间戳值之间进行转换,转换是有损,因为映射是不是一到两个方向之一。有关详细信息,请参阅UNIX_TIMESTAMP()函数的描述。GET_FORMA
31、T(日期|时间| DATETIME,欧元|美国|JIS|ISO|内部)返回一个格式字符串。结合DATE_FORMAT()和的STR_TO_DATE()函数,此功能非常有用。的可能值的第一和第二参数会导致一些可能的格式字符串(符使用DATE_FORMAT(请参阅下表)函数说明)。ISO格式是指ISO 9075,ISO 8601。函数调用导致GET_FORMAT(DATE,美国)MDYGET_FORMAT(DATE,“JIS”)YM-d的GET_FORMAT(DATE,“ISO”)YM-d的GET_FORMAT(DATE,欧元)DMYGET_FORMAT(DATE,内部)YMDGET_FORMAT
32、(DATETIME,美国)YMDH.。s的GET_FORMAT(DATETIME,“JIS”)Ym的DH:I:s的GET_FORMAT(DATETIME,“ISO”)Ym的DH:I:s的GET_FORMAT(DATETIME,欧元)YMDH.。s的GET_FORMAT(DATETIME,内部)YMDHIs的GET_FORMAT(时间,美国)H:I:SPGET_FORMAT(时间,“JIS”)H:I:s的GET_FORMAT(时间,“ISO”)H:I:s的GET_FORMAT(时间,欧元)H.。s的GET_FORMAT(时间,内部)Hs的TIMESTAMP也可以用来作为第一个参数到GET_FOR
33、MAT(),在这种情况下,该函数返回相同的值DATETIME。的mysql SELECT DATE_FORMAT(2003-10-03,GET_FORMAT(DATE,欧元); - 03 .10.2003mysql SELECT的STR_TO_DATE(10 .31.2003,GET_FORMAT(DATE,美国); - 2003-10-31小时(时间)返回小时的时间。返回值的范围是0到23天时间值。然而,时间值的范围实际上是更大的,所以小时可以返回值大于23。mysql SELECT的HOUR(10:05:03); - 10mysql SELECT的小时(272:59:59); - 272L
34、AST_DAY(日期)注意到日期或日期时间值,并返回相应的值,当月的最后一天。返回NULL如果参数是无效的。的mysql SELECT LAST_DAY(2003-02-05); - 2003-02-28的mysql SELECT LAST_DAY(2004-02-05); - 2004-02-29的mysql SELECT LAST_DAY(2004-01-01 01:01:01); - 2004-01-31的mysql SELECT LAST_DAY(2003-03-32); - NULLLOCALTIME,LOCALTIME()LOCALTIMELOCALTIME()的同义词NOW()。
35、LOCALTIMESTAMPLOCALTIMESTAMP()LOCALTIMESTAMPLOCALTIMESTAMP()的同义词NOW()。MAKEDATE(年,DAYOFYEAR)返回的日期,给定年份的天的年值。DAYOFYEAR必须是大于0的结果是NULL。MYSQL:SELECT MAKEDATE(2011,31),MAKEDATE(2011,32); - 2011-01-31,2011-02-01MYSQL:SELECT MAKEDATE(2011,365),MAKEDATE(2014,365); - 2011-12-31,2014-12-31的mysql:SELECT MAKEDAT
36、E(2011,0); - NULLMAKETIME(小时,分,秒)返回的小时,分钟和秒的参数计算出一个时间值。MYSQL:SELECT MAKETIME(12,15,30); - 12:15:30微秒(表达式)返回微秒的时间或日期时间表达式expr的一个数字范围从0到999999。mysql SELECT的的微秒(12:00:00.123456); - 123456mysql SELECT的微秒(2009-12-31 23:59:59.000010); - 10分钟(时间)返回分钟的时间,范围0到59。mysql SELECT的MINUTE(2008-02-03 10:05:03); - 5月
37、(日)日期,每月返回的日期,例如0000-00-00或2008-00-00,有一个零的月份部分的范围为1至12月份,12月,或0。的mysql SELECT MONTH(2008-02-03); - 2MONTHNAME(日期)返回日期的月份的全名。语言的名称用于控制的的lc_time_names系统变量的值(10.7节,“MySQL服务器区域的支持”)。的mysql:SELECT MONTHNAME(2008-02-03); - 二月NOW()作为一种价值YYYY-MM-DD HH:MM:SS或YYYYMMDDHHMMSS.uuuuuu格式,这取决于是否使用函数字符串或数字上下文中,返回当前
38、的日期和时间。该值表示在当前的时区。的mysql SELECT NOW(); - 2007-12-15 23时50分26秒的mysql SELECT NOW()+ 0; - 20071215235026.000000NOW()返回一个恒定的时间,表明在该语句开始执行的时间。(在存储函数或触发,NOW()返回的时间函数或触发语句开始执行),这不同于SYSDATE的行为(),返回执行它的确切时间。的mysql SELECT NOW(),睡眠(2),NOW();+ - + - + - - +| NOW()| SLEEP(2)| NOW()|+ - + - + - - +| 2006-04-12 13时47分36秒| 0 | 2006-04-12 13时47分36秒|+ - + - + - - +的mysql SELECT