注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

@fc_lamp

关注Web应用解决方案MySql/PHP/Python一盏名为"飞川"的灯~

 
 
 

日志

 
 

关于MYSQL时间(日期)的几个计算  

2010-06-01 16:41:00|  分类: Web技术-Mysql |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
关于MYSQL时间(日期)的几个计算
MYSQL的时间(日期)计算在MYSQL中如果字段被设置为datetime或者date类型时,

MySQL本身提供几个日期部分的提取函数.
YEAR( ):提取年
MONTH( ):提取月
DAYOFMONTH( ):提取月份的第几天。
另外mysql还提供了类似于PHP substr()函数功能的字符串截取函数:
right(field_name,str_lenth),left(field_name,str_lenth).
有了这些后,在计算日期时就非常方便了。
比如:
你有一张表,有一个时间字段(datetime类型,格式为:yyyy-mm-dd H:i:s)
id                                   create_time
1                                 2003-08-03 12:36:13
2                                 2005-05-19 13:09:33
3                                 2003-08-13 16:03:53
4                                 2006-09-20 11:30:20
5                                 2003-08-19 17:32:23
.                                        .
.                                       .
.                                       .

例一 如果你想查寻出所有03年的数据:

select *  from table_name where YEAR(create_time)  = '2003'


另注:所有大于03的数据,也可这样写:

select *  from table_name where  create_time  >= '2003-01-01 00:00:00'


例二 如果你想查寻出所有19号的数据:

select *  from table_name where DAYOFMONTH(create_time)  = '19'



例二 如果你想查寻出所有2003-08-19的数据:

select *  from table_name where left(create_time,10)  = '2003-08-19' 



另注: 1 在使用left,right函数时,不要与联表查寻时 left join..on ....搞混淆了。
2 MYSQL中日期是可以直接参与运算的,如:

select *  from table_name where left(create_time,10) > '2010-05-20'


例三 返回当前时间 2003-08-19 15:15:15 的数据:

select concat(curdate(),' ',curtime())  as date_time,now() as date_times from XXX


Mysql中日期时间戳的计算

1  时间戳格式化为时间字符串

   使用 FROM_UNIXTIME(time,format) 函数

   例如():

select id,FROM_UNIXTIME(`inputtime`,'%Y-%m-%d') as `date` from `test`

其中 format 有以下格式(这和PHP中的sprintf()、python中的字符格式相似):
%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), 这里星期一是星期的第一天
%% 一个文字“%”

时间字符串转为时间戳格式

   使用UNIX_TIMESTAMP(date)  函数。

   例如:

select UNIX_TIMESTAMP('2012-12-21')



另更多函数操作,参考官网 http://dev.mysql.com/doc/refman/5.1/zh/functions.html#date-and-time-functions

  评论这张
 
阅读(205)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017