《原创》SQL2005 日期函数大全
2010-06-03 00:26
330 查看
/*
工作中总不记得sql对时间日期的操作。总在有的时候在网去寻找很耗时。 因此自己就对一些实用的东东整理了下。 拿出来和大家晒晒。。。
*/
-- 当前系统日期、时间
select getdate()
-- 当前日期
select 当前日期=convert(varchar(10),getdate(),120)
-- 当前时间
select 当前时间=convert(varchar(8),getdate(),114)
/*
常用到的缩写
*/
/*
DATENAME ( datepart ,date )
返回表示指定日期的指定日期部分的字符串。
参数:datepart - 是指定要返回的日期部分的参数
date - 表达式,用于返回 datetime 或 smalldatetime 值,或日期格式的字符串。
返回类型 nvarchar
*/
--实例
--当年第几周
SELECT 本年第多少周=datename(week,getdate())
SELECT 本年第多少周=datename(week,'20100101')
SELECT 今天是周几=datename(weekday,getdate())
--月份
SELECT datename(mm,getdate())
SELECT month(getdate())
SELECT datepart(mm,getdate())
--年份
SELECT datename(yy,getdate())
SELECT year(getdate())
SELECT datepart(yy,getdate())
--季度
SELECT datename(qq,getdate())
SELECT datepart(qq,getdate())
--天
SELECT datename(dd,getdate())
SELECT day(getdate())
SELECT datepart(dd,getdate())
/*
DATEDIFF ( datepart , startdate , enddate )
返回跨两个指定日期的日期边界数和时间边界数。
参数:datepart - 指定应在日期的哪一部分计算差额的参数
startdate - 计算的开始日期
enddate - 计算的结束日期
返回类型 integer
*/
--用途
--1、2010年年度订单
select * from Orders where DATEDIFF(yyyy,'2010',OrderData)=0
--2、2010年一季度订单
select * from Orders where DATEDIFF(mm,'20100101',OrderData)<3 --是相差多少 1月与4月相差3个月
/*
DATEADD (datepart , number, date )
返回给指定日期加上一个时间间隔后的新 datetime 值。
参数:datepart - 指定要返回新值的日期的组成部分
number - 用于与 datepart 相加的值 如果指定了非整数值,则将舍弃该值的小数部分。
date - 表达式,用于返回 datetime 或 smalldatetime 值,或日期格式的字符串
*/
--用途
-- 一年的第一天 现在用年(yy)的时间间隔来显示这一年的第一天。
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
-- 该季度的第一天
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
--当前日期所在月的第一天
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
--解释 :0 表示 日期时间1900-01-01 00:00:00.000 从 select convert(datetime,0)可获知
--先获取当前日期与1900年01月01号相差的月数A
SELECT DATEDIFF(mm,0,getdate())
--在 从1900年01月01相加 月数A 则可以获取 相加月数后的第一天的日期
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
--2、当前日期所在月的最后时刻
--通过从这个例子上减去3毫秒来获得。有一点要记住,在Sql Server中时间是精确到3毫秒。这就是为什么我需要减去3毫秒来获得我要的日期和时间。
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate())+1, 0))
--
--3、上个月的最后最后时刻
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
--原理同上 。
--4、本周星期一
SELECT dateadd(wk,datediff(wk,0,getdate()),0)
--5、本周星期二
SELECT dateadd(dd,1, dateadd(wk,datediff(wk,0,getdate()),0))
--去年的最后一天 为了要得到去年的最后一天,你需要在今年的第一天上减去3毫秒。
SELECT dateadd(ms,-2,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
--本年的最后一天
SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))
--本月的第一个星期一
SELECT DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)
工作中总不记得sql对时间日期的操作。总在有的时候在网去寻找很耗时。 因此自己就对一些实用的东东整理了下。 拿出来和大家晒晒。。。
*/
-- 当前系统日期、时间
select getdate()
-- 当前日期
select 当前日期=convert(varchar(10),getdate(),120)
-- 当前时间
select 当前时间=convert(varchar(8),getdate(),114)
/*
常用到的缩写
*/
日期部分 | 缩写 |
---|---|
year | yy, yyyy |
quarter | qq, q |
month | mm, m |
dayofyear | dy, y |
day | dd, d |
week | wk, ww |
Hour | hh |
minute | mi, n |
second | ss, s |
millisecond | ms |
DATENAME ( datepart ,date )
返回表示指定日期的指定日期部分的字符串。
参数:datepart - 是指定要返回的日期部分的参数
date - 表达式,用于返回 datetime 或 smalldatetime 值,或日期格式的字符串。
返回类型 nvarchar
*/
--实例
--当年第几周
SELECT 本年第多少周=datename(week,getdate())
SELECT 本年第多少周=datename(week,'20100101')
SELECT 今天是周几=datename(weekday,getdate())
--月份
SELECT datename(mm,getdate())
SELECT month(getdate())
SELECT datepart(mm,getdate())
--年份
SELECT datename(yy,getdate())
SELECT year(getdate())
SELECT datepart(yy,getdate())
--季度
SELECT datename(qq,getdate())
SELECT datepart(qq,getdate())
--天
SELECT datename(dd,getdate())
SELECT day(getdate())
SELECT datepart(dd,getdate())
/*
DATEDIFF ( datepart , startdate , enddate )
返回跨两个指定日期的日期边界数和时间边界数。
参数:datepart - 指定应在日期的哪一部分计算差额的参数
startdate - 计算的开始日期
enddate - 计算的结束日期
返回类型 integer
*/
--用途
--1、2010年年度订单
select * from Orders where DATEDIFF(yyyy,'2010',OrderData)=0
--2、2010年一季度订单
select * from Orders where DATEDIFF(mm,'20100101',OrderData)<3 --是相差多少 1月与4月相差3个月
/*
DATEADD (datepart , number, date )
返回给指定日期加上一个时间间隔后的新 datetime 值。
参数:datepart - 指定要返回新值的日期的组成部分
number - 用于与 datepart 相加的值 如果指定了非整数值,则将舍弃该值的小数部分。
date - 表达式,用于返回 datetime 或 smalldatetime 值,或日期格式的字符串
*/
--用途
-- 一年的第一天 现在用年(yy)的时间间隔来显示这一年的第一天。
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
-- 该季度的第一天
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
--当前日期所在月的第一天
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
--解释 :0 表示 日期时间1900-01-01 00:00:00.000 从 select convert(datetime,0)可获知
--先获取当前日期与1900年01月01号相差的月数A
SELECT DATEDIFF(mm,0,getdate())
--在 从1900年01月01相加 月数A 则可以获取 相加月数后的第一天的日期
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
--2、当前日期所在月的最后时刻
--通过从这个例子上减去3毫秒来获得。有一点要记住,在Sql Server中时间是精确到3毫秒。这就是为什么我需要减去3毫秒来获得我要的日期和时间。
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate())+1, 0))
--
--3、上个月的最后最后时刻
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
--原理同上 。
--4、本周星期一
SELECT dateadd(wk,datediff(wk,0,getdate()),0)
--5、本周星期二
SELECT dateadd(dd,1, dateadd(wk,datediff(wk,0,getdate()),0))
--去年的最后一天 为了要得到去年的最后一天,你需要在今年的第一天上减去3毫秒。
SELECT dateadd(ms,-2,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
--本年的最后一天
SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))
--本月的第一个星期一
SELECT DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)
相关文章推荐
- SQL_Server_2005_函数大全(描述及实例)
- SQL_Server_2005_函数大全(描述及实例)
- 下载-MS SQL Server 2005(大全版)含开发人员版、企业版、标准版
- sql 2005的日期函数
- 【原创】SQL Server 2008 to SQL Server 2005
- SQL_Server_2005_函数大全
- SQL_Server_2005_函数大全(描述及实例)
- [原创]C#应用访问Microsoft SQL Server 2005分析服务
- SQL_Server_2005_函数大全
- [原创]T-SQL Enhancement in SQL Server 2005 - Part II
- 【原创】Microsoft SQL Server 2005技术内幕:T-SQ程序设计 学习笔记
- sql 日期函数格式化大全
- [原创]T-SQL Enhancement in SQL Server 2005 - Part I
- ms sql server 2005 select 用法大全
- ms sql server 2005 select 用法大全
- SQL2005语句大全
- Sql2005常用函数大全
- SQL_Server_2005_函数大全(描述及实例)
- [原创]建立Microsoft SQL Server 2005数据仓库