·取当前时间的函数:
NOW()、LOCALTIME、LOCALTIME(),LOCALTIMESTAMP,
LOCALTIMESTAMP()
CURDATE()、 CURTIME()、 UTC_DATE()、 CURRENT_DATE()、
UTC_TIME()、UTC_TIMESTAMP()、CURRENT_TIMESTAMP()、
CURRENT_TIME()、
FROM_UNIXTIME()、
CONVERT_TZ()、DAY()
·时间、日期计算函数:
DATE_ADD(), DATE_SUB(),ADDDATE(),SUBDATE,
CURRENT_DATE(),CURRENT_TIME(),CURDATE(),CURTIME()
DATEDIFF(expr,expr2)
TIMEDIFF(expr,expr2)
ADDTIME(),SUBTIME()
CURDATE(), CURTIME()
LOCALTIMESTAMP, LOCALTIMESTAMP()
TIMESTAMP(expr) , TIMESTAMP(expr,expr2) ,
TIMESTAMPADD(interval,int_expr,datetime_expr)
TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)
·时间、日期抽取函数:
EXTRACT(),
TIME(expr)
DAY(), DAYNAME(), DAYOFMONTH(), DAYOFWEEK(), DAYOFWEEK
(),
WEEK(date[,mode]) ,WEEKDAY(date),
DAYOFYEAR(date), MONTH(date), MONTHNAME(date),QUARTER
(date)
MICROSECOND(expr),MINUTE(),SECOND(),HOUR(time),
MAKEDATE(year,dayofyear) MAKETIME(hour,minute,second)
YEAR(date)
FROM_DAYS(), TO_DAYS(), LAST_DAY(date)
DATE_FORMAT(date,format), STR_TO_DATE(str,format)
TIME_FORMAT(time,format)
TIME_TO_SEC(time) TO_DAYS(date)
UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)
UTC_TIMESTAMP, UTC_TIMESTAMP()
UTC_DATE, UTC_DATE()
·INTERVAL 关键字(重点!!!)
========================================================
==============
type 值 预期的 expr 格式
========================================================
==============
MICROSECOND MICROSECONDS
-------------------------------------------------------
---------------
SECOND SECONDS
-------------------------------------------------------
---------------
MINUTE MINUTES
-------------------------------------------------------
---------------
HOUR HOURS
-------------------------------------------------------
---------------
DAY DAYS
-------------------------------------------------------
---------------
WEEK WEEKS
-------------------------------------------------------
---------------
MONTH MONTHS
-------------------------------------------------------
---------------
QUARTER QUARTERS
-------------------------------------------------------
---------------
YEAR YEARS
-------------------------------------------------------
---------------
SECOND_MICROSECOND 'SECONDS.MICROSECONDS'
-------------------------------------------------------
---------------
MINUTE_MICROSECOND 'MINUTES.MICROSECONDS'
-------------------------------------------------------
---------------
MINUTE_SECOND 'MINUTES:SECONDS'
-------------------------------------------------------
---------------
HOUR_MICROSECOND 'HOURS.MICROSECONDS'
-------------------------------------------------------
---------------
HOUR_SECOND 'HOURS:MINUTES:SECONDS'
-------------------------------------------------------
---------------
HOUR_MINUTE 'HOURS:MINUTES'
-------------------------------------------------------
---------------
DAY_MICROSECOND 'DAYS.MICROSECONDS'
-------------------------------------------------------
---------------
DAY_SECOND 'DAYS HOURS:MINUTES:SECONDS'
-------------------------------------------------------
---------------
DAY_MINUTE 'DAYS HOURS:MINUTES'
-------------------------------------------------------
---------------
DAY_HOUR 'DAYS HOURS'
-------------------------------------------------------
---------------
YEAR_MONTH 'YEARS-MONTHS'
========================================================
==============
·详尽范例:
SELECT NOW() + INTERVAL 3 DAY
SELECT NOW() + INTERVAL -3 DAY
SELECT NOW() - INTERVAL +3 DAY
·MICROSECOND
SELECT NOW(), NOW()+INTERVAL 1 MICROSECOND
==> 2007-04-20 14:35:04.0 2007-04-20
14:35:04.000000001
·SECOND
SELECT NOW(), NOW()+INTERVAL 1 SECOND
==> 2007-04-20 14:38:40.0 2007-04-20 14:38:41.0
·MINUTE
SELECT NOW(), NOW()+INTERVAL 1 MINUTE
==> 2007-04-20 14:38:40.0 2007-04-20 14:38:41.0
·HOUR
SELECT NOW(), NOW()+INTERVAL 1 HOUR
==> 2007-04-20 14:41:23.0 2007-04-20 15:41:23.0
·DAY
SELECT NOW(), NOW()+INTERVAL 1 DAY
==> 2007-04-20 14:42:04.0 2007-04-21 14:42:04.0
·EXTRACT(type FROM date) (重点!!!)
·说明:
EXTRACT()函数所使用的时间间隔类型说明符同 DATE_ADD()
或DATE_SUB()
的相同,但它从日期中提取其部分,而不是执行日期运算。
·范例:
SELECT NOW(), EXTRACT(YEAR FROM NOW())
==> 2007-04-20 15:06:46.0 2007
SELECT NOW(), EXTRACT(MONTH FROM NOW())
==> 2007-04-20 15:08:24.0 4
SELECT NOW(), EXTRACT(DAY FROM NOW())
==> 2007-04-20 15:07:31.0 20
·DATE_ADD(date, INERVAL expr type) DATE_SUB(date,
INERVAL expr type)
·说明:参数date 只取日期部分。零值日期 返回 0,
如'2007-04-00'。
激活 INTERVAL 后,DATE_ADD等价于 ADDDATE(),DATE_SUB
等价于SUB_DATE()
·范例:
SELECT NOW(), DATE_ADD(CURDATE(),INTERVAL 3 DAY)
SELECT NOW(), DATE_SUB(CURDATE(),INTERVAL 3 DAY)
SELECT NOW(), ADDDATE(CURDATE(),INTERVAL 3 DAY)
SELECT NOW(), SUBDATE(CURDATE(),INTERVAL 3 DAY)
SELECT NOW(), ADDDATE(CURDATE(), 3)
SELECT NOW(), SUBDATE(CURDATE(), 3)
·CONVERT_TZ()
·说明:将时间日期值dt 从from_tz 给出的时区转到to_tz
给出的时区,
然后返回结果值。若自变量无效,则这个函数会返回 NULL
。
·范例:
SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET')
SELECT CONVERT_TZ('2004-01-01
12:00:00','+00:00','+10:00')
·ADDTIME(expr,expr2)
·说明:ADDTIME()将 expr2添加至expr 然后返回结果。
expr 是一个时间或时间日期表达式,而expr2 是一个时间
表达式。
·范例:
SELECT ADDTIME('1997-12-31 23:59:59.999999', '1
1:1:1.000002')
SELECT ADDTIME('01:00:00.999999', '02:00:00.999998')
·SUBTIME(expr,expr2)
SUBTIME()从expr 中提取expr2 ,然后返回结果。expr 是
一个时间或日期
时间表达式,而xpr2 是一个时间表达式。
SELECT NOW(), SUBTIME(NOW(), '1 1:1:1.000002')
==> 2007-04-20 16:00:35.0 2007-04-19
14:59:33.000999998
·CURDATE(), CURTIME(),CURRENT_DATE(),CURRENT_TIME()
·说明:
CURDATE()将当前日期按照'YYYY-MM-DD' 或YYYYMMDD 格式
的值返回,
CURTIME()将当前时间以'HH:MM:SS'或 HHMMSS 的格式返回
,
具体格式根据函数用在字符串或是数字语境中而定。
CURDATE()等价于CURRENT_DATE()
CURTIME()等价于CURRENT_TIME()
·范例:
SELECT CURDATE() ==> 2007-4-20
SELECT CURDATE()+0 ==> 20070420
SELECT CURRENT_TIME() ==> 03:59:28
SELECT CURRENT_TIME()+0 ==> 035928
·DATE(expr)
·说明:提取日期或时间日期表达式expr中的日期部分。
·范例:
SELECT DATE('2007-04-20 01:02:03') ==> 2007-04-20
SELECT NOW(), DATE(NOW()) ==> 2007-04-20
04:03:30.0 2007-4-20
·DATEDIFF(expr,expr2)
·说明:返回起始时间 expr和结束时间expr2之间的天数。
Expr和expr2 为日期或 date-and-time 表达式。
计算中只用到这些值的日期部分。
·范例:
SELECT NOW(), DATEDIFF(NOW(),'2007-04-01')
==> 2007-04-20 14:25:33.0 19
SELECT NOW(), DATEDIFF('2007-04-01', NOW())
==> 2007-04-20 14:25:33.0 -19
·DATE_FORMAT(date,format) (重点!!!)
·说明:根据format 字符串安排date 值的格式。
以下说明符可用在 format 字符串中:
========================================================
==============
说明符 说明
========================================================
==============
%a 工作日的缩写名称 (Sun..Sat)
-------------------------------------------------------
---------------
%b 月份的缩写名称 (Jan..Dec)
-------------------------------------------------------
---------------
%c 月份,数字形式(0..12)
-------------------------------------------------------
---------------
%D 带有英语后缀的该月日期 (0th, 1st, 2nd, 3rd,
...)
-------------------------------------------------------
---------------
%d 该月日期, 数字形式 (00..31)
-------------------------------------------------------
---------------
%e 该月日期, 数字形式(0..31)
-------------------------------------------------------
---------------
%f 微秒 (000000..999999)
-------------------------------------------------------
---------------
%H 小时(00..23)
-------------------------------------------------------
---------------
%h 小时(01..12)
-------------------------------------------------------
---------------
%I 小时 (01..12)
-------------------------------------------------------
---------------
%i 分钟,数字形式 (00..59)
-------------------------------------------------------
---------------
%j 一年中的天数 (001..366)
-------------------------------------------------------
---------------
%k 小时 (0..23)
-------------------------------------------------------
---------------
%l 小时 (1..12)
-------------------------------------------------------
---------------
%M 月份名称 (January..December)
-------------------------------------------------------
---------------
%m 月份, 数字形式 (00..12)
-------------------------------------------------------
---------------
%p 上午(AM)或下午( PM)
-------------------------------------------------------
---------------
%r 时间 , 12小时制 (小时hh:分钟mm:秒数ss 后加 AM
或PM)
-------------------------------------------------------
---------------
%S 秒 (00..59)
-------------------------------------------------------
---------------
%s 秒 (00..59)
-------------------------------------------------------
---------------
%T 时间 , 24小时制 (小时hh:分钟mm:秒数ss)
-------------------------------------------------------
---------------
%U 周 (00..53), 其中周日为每周的第一天
-------------------------------------------------------
---------------
%u 周 (00..53), 其中周一为每周的第一天
-------------------------------------------------------
---------------
%V 周 (01..53), 其中周日为每周的第一天 ; 和 %X同
时使用
-------------------------------------------------------
---------------
%v 周 (01..53), 其中周一为每周的第一天 ; 和 %x同
时使用
-------------------------------------------------------
---------------
%W 工作日名称 (周日..周六)
-------------------------------------------------------
---------------
%w 一周中的每日 (0=周日..6=周六)
-------------------------------------------------------
---------------
%X 该周的年份,其中周日为每周的第一天, 数字形式,4
位数;和%V同时使用
-------------------------------------------------------
---------------
%x 该周的年份,其中周一为每周的第一天, 数字形式,4
位数;和%v同时使用
-------------------------------------------------------
---------------
%Y 年份, 数字形式,4位数
-------------------------------------------------------
---------------
%y 年份, 数字形式 (2位数)
-------------------------------------------------------
---------------
%% ‘%’文字字符
========================================================
==============
所有其它字符都被复制到结果中,无需作出解释。
注意, ‘%’字符要求在格式指定符之前。
月份和日期说明符的范围从零开始,原因是 MySQL允许存储
诸如 '2004-00-00'的不完全日期.
·%Y-%m-%d %H:%i:%S.%f 为最常用的格式
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%S.%f')
·TIME_FORMAT(time,format)
同 DATE_FORMAT()
·STR_TO_DATE(str,format)
这是DATE_FORMAT() 函数的倒转。
·DAY(date)
DAY() 和DAYOFMONTH()的意义相同。
SELECT NOW() ,DAY(NOW()) ==> 2007-04-20
14:58:37.0 20
·DAYNAME(date)
返回date 对应的工作日名称。
SELECT NOW() ,DAYNAME(NOW()) ==> 2007-04-20
14:58:05.0 Friday
·DAYOFMONTH(date)
返回date 对应的该月日期,范围是从 1到31。与DAY()意义
相同。
SELECT NOW() ,DAYOFMONTH(NOW()) ==> 2007-04-20
15:00:53.0 20
·DAYOFWEEK(date)
返回date (1 = 周日, 2 = 周一, ..., 7 = 周六)对应的工
作日索引。
这些索引值符合 ODBC标准
SELECT NOW() ,DAYOFWEEK(NOW()) ==> 2007-04-20
15:01:24.0 6
·DAYOFYEAR(date)
返回date 对应的一年中的天数,范围是从 1到366。
参考 MAKEDATE(year,dayofyear)
SELECT NOW() ,DAYOFYEAR(NOW()) ==> 2007-04-20
15:02:53.0 110
·HOUR(time)
返回time 对应的小时数。对于日时值的返回值范围是从 0
到 23 。
·LAST_DAY(date)
获取一个日期或日期时间值,返回该月最后一天对应的值。
若参数无效,则返回NULL。
·MAKEDATE(year,dayofyear)
给出年份值和一年中的天数值,返回一个日期。
dayofyear 必须大于 0 ,否则结果为 NULL。
参考DAYOFYEAR(date)
SELECT NOW(), MAKEDATE(YEAR(NOW()),DAYOFYEAR(NOW()))
==> 2007-04-20 15:47:03.0 2007-04-20
·MAKETIME(hour,minute,second)
返回由hour、 minute和second 参数计算得出的时间值。
参考:HOUR(),MINUTE(),SECOND()
·FROM_DAYS()
·TO_DAYS()
SELECT FROM_DAYS(TO_DAYS(NOW())) ==> 2007-04-20
·MICROSECOND(expr)
·从时间或日期时间表达式expr返回微秒值,其数字范围从
0到 999999。
SELECT MICROSECOND('12:00:00.123456') ==>
123456
·MINUTE(time)
返回 time 对应的分钟数,范围是从 0 到 59。
·MONTH(date)
返回date 对应的月份,范围时从 1 到 12。
·MONTHNAME(date)
返回date 对应月份的全名。
·QUARTER(date)
返回date 对应的一年中的季度值,范围是从 1到 4。
·SYSDATE()
返回当前日期和时间值,格式为'YYYY-MM-DD HH:MM:SS' 或
YYYYMMDDHHMMSS,
具体格式根据函数是否用在字符串或数字语境而定。
在一个存储程序或触发器中, SYSDATE()返回其执行的时间,
而非存储成都
或触发语句开始执行的时间。这个NOW()的运作有所不同。
·TIME(expr)
提取一个时间或日期时间表达式的时间部分,并将其以字符
串形式返回。
SELECT NOW(), TIME(NOW())
==> 2007-04-20 16:03:30.0 16:03:30
·TIMEDIFF(expr,expr2)
TIMEDIFF() 返回起始时间 expr 和结束时间expr2 之间的
时间。
expr 和expr2 为时间或 date-and-time 表达式,两个的类
型必须一样。
·TIMESTAMP(expr) , TIMESTAMP(expr,expr2)
对于一个单参数,该函数将日期或日期时间表达式 expr 作
为日期时间值返回.
对于两个参数, 它将时间表达式 expr2 添加到日期或日期
时间表达式 expr 中,
将theresult作为日期时间值返回。
SELECT TIMESTAMP('2007-04-20')
==> 2007-04-20 00:00:00.0
SELECT TIMESTAMP('2007-04-20 12:00:00','12:00:00')
==> 2007-04-21 00:00:00
·TIMESTAMPADD(interval,int_expr,datetime_expr)
将整型表达式int_expr 添加到日期或日期时间表达式
datetime_expr中。
int_expr 的单位被时间间隔参数给定,该参数必须是以下
值的其中一个:
FRAC_SECOND、SECOND、 MINUTE、 HOUR、 DAY、
WEEK、 MONTH、 QUARTER或 YEAR。
SELECT TIMESTAMPADD(MINUTE,1,'2007-04-20 12:00:00')
==> 2007-04-20 12:01:00
·TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)
返回日期或日期时间表达式datetime_expr1 和
datetime_expr2the
之间的整数差。其结果的单位由interval 参数给出。
interval 的法
定值同TIMESTAMPADD()函数说明中所列出的相同。
SELECT TIMESTAMPDIFF(MONTH,'2007-04-20','2003-05-
01')
==> -47
SELECT TIMESTAMPDIFF(YEAR,'2001-01-01','2007-04-20')
==> 6
·TIME_TO_SEC(time)
返回已转化为秒的time参数。
·TO_DAYS(date)
给定一个日期date, 返回一个天数 (从年份0开始的天数 )
。
·UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)
若无参数调用,则返回一个Unix timestamp ('1970-01-01
00:00:00'
GMT 之后的秒数) 作为无符号整数。若用date 来调用
UNIX_TIMESTAMP(),
它会将参数值以'1970-01-01 00:00:00' GMT后的秒数的形式返
回。
date 可以是一个DATE 字符串、一个 DATETIME字符串、一
个 TIMESTAMP或
一个当地时间的YYMMDD 或YYYMMDD格式的数字。
SELECT NOW(), UNIX_TIMESTAMP(), UNIX_TIMESTAMP(NOW
())
==> 2007-04-20 16:27:24.0 1177057644
1177057644
·UTC_DATE, UTC_DATE()
返回当前 UTC日期值,其格式为 'YYYY-MM-DD' 或
YYYYMMDD,
具体格式取决于函数是否用在字符串或数字语境中。
SELECT UTC_DATE(), UTC_DATE() + 0
==> 2007-04-20 20070420
·UTC_TIMESTAMP, UTC_TIMESTAMP()
返回当前UTC日期及时间值,格式为 'YYYY-MM-DD
HH:MM:SS' 或YYYYMMDDHHMMSS,
具体格式根据该函数是否用在字符串或数字语境而定。
SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0
==> 2007-04-20 08:30:05.0 20070420083005
·WEEK(date[,mode])
第一天
Mode 工作日 范围 Week 1 为第一周
...
0 周日 0-53 本年度中有一个周日
1 周一 0-53 本年度中有3天以上
2 周日 1-53 本年度中有一个周日
3 周一 1-53 本年度中有3天以上
4 周日 0-53 本年度中有3天以上
5 周一 0-53 本年度中有一个周一
6 周日 1-53 本年度中有3天以上
7 周一 1-53 本年度中有一个周一
·WEEKDAY(date)
返回date (0 = 周一, 1 = 周二, ... 6 = 周日)对应的工
作日索引
weekday index for
SELECT WEEKDAY(NOW()) ==> 4
·WEEKOFYEAR(date)
将该日期的阳历周以数字形式返回,范围是从1到53。
它是一个兼容度函数,相当于WEEK(date,3)。
·YEAR(date)
返回date 对应的年份,范围是从1000到9999。
·YEARWEEK(date), YEARWEEK(date,start)
返回一个日期对应的年或周。start参数的工作同 start参
数对 WEEK()的工作相同。
结果中的年份可以和该年的第一周和最后一周对应的日期参数有
所不同。
SELECT YEARWEEK('2007-01-01')
==> 200653
注意,周数和WEEK()函数队可选参数0或 1可能会返回的(0)
w有所不同,
原因是此时 WEEK() 返回给定年份的语境中的周。
本文永久链接: http://www.zzxj.net/blog/fxs_2008/archive/2009/11/28/98.html
发表于 @ 2009年11月28日 |评论(loading... )|收藏