Mysql 中时间日期函数

 

Mysql 中时间日期函数

 

获取当前日期或时间

--当前日期

SELECT curdate( )

2010-11-15

 

SELECT CURRENT_DATE( )

2010-11-15

 

--当前时间

SELECT curtime( )

12:51:35

 

SELECT CURRENT_TIME( )

12:53:25

 

--当前日期时间

SELECT now( )

2010-11-15 13:01:40

 

SELECT CURRENT_TIMESTAMP( )

2010-11-15 12:52:47

注意:在一个单一询问中,对诸如NOW() 的函数多次访问总是会得到同样的结果

 

日期增减

DATE_ADD(date,INTERVAL expr type)

DATE_SUB(date,INTERVAL expr type)

这些函数执行日期运算。

date 是一个 DATETIME 或DATE值,用来指定起始时间。

expr 是一个表达式,用来指定从起始日期添加或减去的时间间隔值。 Expr是一个字符串;对于负值的时间间隔,它可以以一个 ‘-’开头。

type 为关键词,它指示了表达式被解释的方式。 

关键词INTERVA及 type 分类符均不区分大小写。

以下表显示了typeexpr 参数的关系:

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'

MySQL 允许任何expr 格式中的标点分隔符。表中所显示的是建议的 分隔符。若 date 参数是一个 DATE 值,而你的计算只会包括 YEAR、MONTH和DAY部分(即, 没有时间部分), 其结果是一个DATE 值。否则,结果将是一个 DATETIME值。

SELECT DATE_ADD( '1997-12-31 23:59:59', INTERVAL 1  SECOND ) ;

1998-01-01 00:00:00

 

SELECT DATE_ADD( '1997-12-31 23:59:59', INTERVAL 1  DAY ) ;

1998-01-01 23:59:59

 

SELECT DATE_ADD( '1998-01-01 00:00:00', INTERVAL '-1 10' DAY_HOUR ) ;

1997-12-30 14:00:00

 

--31天前

SELECT DATE_SUB( '1998-01-02', INTERVAL 31  DAY ) ;

1997-12-02

 

--前一天

SELECT date_add( '2010-11-11', INTERVAL -1 DAY )

2010-11-10

 

将日期时间转换成指定格式

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'的不完全日期.

SELECT DATE_FORMAT( FROM_UNIXTIME( 875996580 ) , '%Y-%m-%d %H:%i:%s' )

1997-10-05 04:23:00

 

SELECT DATE_FORMAT( FROM_UNIXTIME( 875996580 ) , '%Y-%m-%d' )

1997-10-05

 

FROM_UNIXTIME(unix_timestamp) ,

FROM_UNIXTIME(unix_timestamp,format)

返回'YYYY-MM-DD HH:MM:SS'YYYYMMDDHHMMSS 格式值的unix_timestamp参数表示,具体格式取决于该函数是否用在字符串中或是数字语境中。

 

format 已经给出,则结果的格式是根据format 字符串而定。 format 可以包含同DATE_FORMAT() 函数输入项列表中相同的说明符。

 

SELECT FROM_UNIXTIME(875996580);

'1997-10-04 22:23:00'

 

SELECT FROM_UNIXTIME(875996580) + 0;

19971004222300

 

MySql unix时间转换成SQLServer适用的时间格式

SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y-%m-%d %H:%i:%s');

'2010-11-12 17:08:59'

 

SQLServer适用的时间格式转换成unix时间

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格式的数字。
mysql> SELECT UNIX_TIMESTAMP();
-> 882226357
mysql> SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00');
-> 875996580
mysql>  SELECT unix_timestamp( '1997-10-04' )
-> 875894400

MySql DateTime 转换成指定格式字符串

更多内容参考:

MySQL在线中文手册

http://imysql.cn/docs/MySQL_51_zh/mysql_51.html

 

 

 

posted on 2010-11-15 13:46  Leon_He  阅读(492)  评论(0编辑  收藏  举报

导航