Chinaunix首页 | 论坛 | 博客
  • 博客访问: 296341
  • 博文数量: 57
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1474
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-25 10:56
文章分类
文章存档

2014年(25)

2013年(32)

分类: SQLServer

2014-01-02 17:33:44



/*日期和时间处理函数
常用的日期和时间处理函数

函数         说明
dateadd()    添加日期(天,周等)
datediff()   计算两个日期的差
datename()   返回部分日期的字符串表示
datepart()   返回日期的一部分(星期几、月、年等)
day()        返回日期中的天=datepart(day,)
getdate()    返回当前的日期和时间
month()      返回日期中的月=datepart(month,)
year()       返回日期中的年=datepart(year,)

其中函数datediff()、datename() and datepart(),要求把日期成分传递给他们。下表为支持的日期成分。

日期成分                       缩写
天                             dd or d
年中的天                       dy or y
时                             hh
毫秒                           ms
分                             mi or n
月份                           m or mm
季度                           q or qq
秒                             ss or s
周                             wk or ww
周中的天(仅用于datepart())   dw or w
年                             yy or yyyy   

T-SQL支持以下几种日期和串表示格式
2006-08-17;
august 17,2006;
20060817;
8/17/2006;   此种表示方式避免使用。*/

--example:
--返回指字日期的成分
select getdate();  --返回当前日期及时间
select datename(d,getdate());   --返回今天是几号
select day(getdate());  --返回今天是几号
select datename(y,getdate());   --返回今年有多少天
select datename(hh,getdate());  --返回现在几点
select datename(ms,getdate());  --返回现在提毫秒数
select datename(q,getdate());   --返回季度
select datename(s,getdate());   --返回秒数
select datename(dw,getdate());  --返回今天是星期几
select datename(w,getdate());   --返回今天是星期几
select datepart(w,getdate());   --以数字表示今天是星期几
select datename(ww,getdate());  --返回今天周数
select datepart(ww,getdate());  --返回今天周数
select datepart(yy,getdate());  --返回今年的年份
select '今年是'+datename(yy,getdate())+'年'+'第'+datename(ww,getdate())+'周';  --返回今年是2013年第53周

--datediff()的使用
select datediff(d,getdate(),'20140819');  --返回今天到20140819的天数

--example:
select cust_id,order_num
from orders
where order_date='20050901'  --此时要求数据库中存储的时间为:0:00.000 如不是刚匹配不成功

--解决方法
select cust_id,order_num
from orders
where datediff(day,order_date,'20050901')=0   --比较两个日期的天数差别为0的,

--同理,查询2005年9月份的订单
select cust_id,order_num
from orders
where datediff(month,order_date,'20050901')=0  --month可简写为:m
--等同于
select cust_id,order_num
from orders
where year(order_date)=2005 and month(order_date)=9;

阅读(5720) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~