T-SQL日期函数

-------------------------日期时间类型---------------------------------

---T-SQL YEAR,MONTH,DAY函数均一INT 数据类型的格式返回特定日期的年度信息.
SELECT 'YEAR NUMBER' = YEAR(GETDATE())
SELECT 'YEAR NUMBER' = MONTH(GETDATE())
SELECT 'YEAR NUMBER' = DAY(GETDATE())


--获取日期时间值部分DATEPART
DATEPART(DATEPART,DATE数据)
--DATEPART : 特定的要返回的数据的格式代码
--date数据: 一个可以解析为TIME ,DATE ,SMALLDATETIME,DATETIME DATETIME2的值的表达式、列表达式、用户定义的变量或字符串文字


SELECT DATEPART(YEAR,GETDATE()) AS '年份1'
SELECT DATEPART(YYYY,GETDATE()) AS '年份2'
SELECT DATEPART(YY,GETDATE()) AS '年份3'

-- 日期加法DATEADD
-- DATEADD函数将某个日期加上一个特定的时间间隔值后返回 DATETIME数据类型的值
--1语法
DATEADD(DATEPART,NUMBER,DATE数据)

select top 100 indate 订单日期,DATEADD(DAY,14,InDate) '相加后的日期' , * from dbo.SOMaster with(nolock)
order by InDate

/*
订单日期                相加后的日期
2010-09-23 00:11:59.000    2010-10-07 00:11:59.000
2010-09-23 00:12:29.000    2010-10-07 00:12:29.000
2010-09-23 00:12:57.000    2010-10-07 00:12:57.000
2010-09-23 00:21:21.000    2010-10-07 00:21:21.000
2010-09-23 00:23:57.000    2010-10-07 00:23:57.000
2010-09-23 00:27:06.000    2010-10-07 00:27:06.000
2010-09-23 00:32:11.000    2010-10-07 00:32:11.000
2010-09-23 00:47:11.000    2010-10-07 00:47:11.000
2010-09-23 00:47:33.000    2010-10-07 00:47:33.000
2010-09-23 00:48:10.000    2010-10-07 00:48:10.000
*/

--日期减法


select top 10 indate 订单日期,DATEDIFF(DAY,InDate,'2010-10-10 00:00:00.000') '相减后的日期' 
from dbo.SOMaster with(nolock)
order by InDate
/*
订单日期               相减后的日期
2010-09-23 00:11:59.000        17
2010-09-23 00:12:29.000        17
2010-09-23 00:12:57.000        17
2010-09-23 00:21:21.000        17
2010-09-23 00:23:57.000        17
2010-09-23 00:27:06.000        17
2010-09-23 00:32:11.000        17
2010-09-23 00:47:11.000        17
2010-09-23 00:47:33.000        17
2010-09-23 00:48:10.000        17
*/
  
SELECT SYSDATETIME()   --获取系统时间
union all
select SYSDATETIMEOFFSET()  --获取当前日期和时间


--判断是否为日期数据isdate(expression)  --若表达式为有效的日期数据:1 ,否则: 0
 ----select ISDATE(OrderId) from ShippingOrderExtend WITH(NOLOCK)  where OrderId=1019506
declare @aa int
select isdate(@aa)

/*************************************************************************/


--获取字符的ASCII码ASCII 
--ASCII码是对字符的标准编码。要获取字符的ASCII码就可以通过调用ASCII函数来实现

SET NOCOUNT ON 
--获取ASCII码起始位置临时变量
DECLARE @beginposition int

--定义字符串变量,存储要获取ASCII码的字符串
DECLARE @TempString varchar(100)

--初始化变量
SET @beginposition = 1
SET @TempString = 'dancewithwave@163.com'
--对字符串中的每个字符循环执行ASCII函数
WHILE @beginposition < = DATALENGTH(@TempString)
    BEGIN 
    SELECT ASCII ( SUBSTRING ( @TempString , @beginposition , 1 ) ),
    CHAR(  ASCII ( SUBSTRING ( @TempString , @beginposition , 1 ) ))
    
    SET @beginposition = @beginposition + 1
    END
SET NOCOUNT OFF
GO
    

 

 

 

--摘自<T-SQL管理与开发实例精粹>

posted @ 2012-06-05 15:35  _cc  阅读(2890)  评论(0编辑  收藏  举报