mysql日期函数

基本的mysql日期函数:

-- 用日期与字符串转换,计算当月第一天、下月第一天
select curdate() as '当前日期', 
DATE_FORMAT(curdate(), '%Y-%m') as '当前月份', 
str_to_date(concat(DATE_FORMAT(curdate(), '%Y-%m'), '-01'), '%Y-%m-%d') as '当前月的第一天', 
date_add(str_to_date(concat(DATE_FORMAT(curdate(), '%Y-%m'), '-01'), '%Y-%m-%d'), interval 1 month) as '下月的第一天';

-- 当前月的最后一天
select last_day(curdate());

-- 下月第一天
select date_add(last_day(curdate()), interval 1 day);

-- 当天为当月的第几天
select day(curdate());

-- 当月第一天
select date_add(curdate(), interval 1-(day(curdate())) day);
 
  
mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法: 
语法: 
TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2) 
说明: 
返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。其结果的单位由interval 参数给出。interval 的法定值同TIMESTAMPADD()函数说明中所列出的相同。 

mysql> SELECT TIMESTAMPDIFF(MONTH,'2009-12-01','2009-09-01'); 
-> -3 
mysql> SELECT TIMESTAMPDIFF(YEAR,'2009-05-01','2008-01-01'); 

-> -1

精确到秒差

select TIMESTAMPDIFF(SECOND,DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s'),'2013-03-07 15:43:00')  from dual

 
  

DAYOFWEEK(date)  

返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。  
mysql> select DAYOFWEEK('1998-02-03');  

-> 3  


WEEKDAY(date)  
返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。  
mysql> select WEEKDAY('1997-10-04 22:23:00');  
-> 5  
mysql> select WEEKDAY('1997-11-05');  
-> 2


DAYOFMONTH(date)  
返回date的月份中日期,在1到31范围内。  
mysql> select DAYOFMONTH('1998-02-03');  
-> 3  


DAYOFYEAR(date)  
返回date在一年中的日数, 在1到366范围内。  
mysql> select DAYOFYEAR('1998-02-03');  
-> 34 


MONTH(date)  
返回date的月份,范围1到12。  
mysql> select MONTH('1998-02-03');  
-> 2 


YEAR(date)  
返回date的年份,范围在1000到9999。  
mysql> select YEAR('98-02-03');  
-> 1998  

HOUR(time)  
返回time的小时,范围是0到23。  
mysql> select HOUR('10:05:03');  
-> 10  

MINUTE(time)  
返回time的分钟,范围是0到59。  
mysql> select MINUTE('98-02-03 10:05:03');  
-> 5  

SECOND(time)  
回来time的秒数,范围是0到59。  
mysql> select SECOND('10:05:03');  
-> 3  


TO_DAYS(date)  
给出一个日期date,返回一个天数(从0年的天数)。  
mysql> select TO_DAYS(950501);  
-> 728779  
mysql> select TO_DAYS('1997-10-07');  
-> 729669  

TO_DAYS()不打算用于使用格列高里历(1582)出现前的值。  

FROM_DAYS(N)  
给出一个天数N,返回一个DATE值。  
mysql> select FROM_DAYS(729669);  
-> '1997-10-07'  


DATE_FORMAT(date,format)  
根据format字符串格式化date值。下列修饰符可以被用在format字符串中: %M 月名字(January……December)  
%W 星期名字(Sunday……Saturday)  
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)  
%Y 年, 数字, 4 位  
%y 年, 数字, 2 位  
%a 缩写的星期名字(Sun……Sat)  
%d 月份中的天数, 数字(00……31)  
%e 月份中的天数, 数字(0……31)  
%m 月, 数字(01……12)  
%c 月, 数字(1……12)  
%b 缩写的月份名字(Jan……Dec)  
%j 一年中的天数(001……366)  
%H 小时(00……23)  
%k 小时(0……23)  
%h 小时(01……12)  
%I 小时(01……12)  
%l 小时(1……12)  
%i 分钟, 数字(00……59)  
%r 时间,12 小时(hh:mm:ss [AP]M)  
%T 时间,24 小时(hh:mm:ss)  
%S 秒(00……59)  
%s 秒(00……59)  
%p AM或PM  
%w 一个星期中的天数(0=Sunday ……6=Saturday )  
%U 星期(0……52), 这里星期天是星期的第一天  
%u 星期(0……52), 这里星期一是星期的第一天  
%% 一个文字“%”。 

mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');  
-> 'Saturday October 1997'  
mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');  
-> '22:23:00'  
mysql> select DATE_FORMAT('1997-10-04 22:23:00',  
'%D %y %a %d %m %b %j');  
-> '4th 97 Sat 04 10 Oct 277'  
mysql> select DATE_FORMAT('1997-10-04 22:23:00',  
'%H %k %I %r %T %S %w');  
-> '22 22 10 10:23:00 PM 22:23:00 00 6'  



 
  











你可能感兴趣的:(mysql)