博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

读邹建的书(第二章)

Posted on 2005-09-05 09:20  雨叶秋寒  阅读(547)  评论(0)    收藏  举报
 就是最近在CSDN上炒的比较火的《中文版SQL Server 2000开发与管理应用实例》,也不清楚自己到底是冲着邹建的大名还是为了华储7周年买书送的T恤,买了本看看,刚看了2章就不枉加评论了,不过还是建议参考着联机丛书,有的地方是由联机丛书上改编而来,而且没有联机丛书讲得那么细,也许是“由于篇幅原因”,不过一点是可以肯定的,全是干的。搞技术的都不善言辞果然不假。
 言归正传,既然买了就得看,准备在这里做做笔记。看书不总结是收获不到什么的。第一章的东西就不做笔记了,从第二章开始。

第二章 日期处理

1.类型
datetime类型处理从1753年1月1日~9999年12月31日的日期和时间数据,存储长度为8字节,日期和时间各用4个字节存储,第一个4字节存储自1900年1月1日之前或之后的天数(以1900年1月1日为分界点,在1900年1月1日之前的日期的天数小于0,在1900年1月1日之后的日期的天数大于0)。另外一个4字节存储以午夜(00:00:00.000)后毫秒数所代表的每天的时间。精确度为百分之三秒。对于0.000~0.001、0.009的日期值,调整为0.000;对于0.002~0.004的日期值,调整为0.003;对于0.005~0.008的日期值,调整为0.007。

smalldatetime类型处理从1900年1月1日~2079年6月6 日的日期和时间数据,存储长度为4字节,第一个2字节存储自1900年1月1日之后的天数。另外一个2字节存储午夜(00:00:00.000)后的分钟数。精确到分钟。29.998秒或更低的smalldatetime值向下舍入为最接近的分钟,29.999秒或更高的smalldatetime值向上舍入为最接近的分钟。

2.日期函数(全部示例使用pubs数据库) 
 DATEADD 
    概述:在向指定日期加上一段时间的基础上,返回新的datetime值。
    语法:DATEADD ( datepart , number, date )
    示例:SELECT DATEADD(day, 21, pubdate) AS timeframe FROM titles 

 DATEDIFF 
    概述:返回跨两个指定日期的日期和时间边界数。
    语法:DATEDIFF ( datepart , startdate , enddate )
    示例:SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days FROM titles 

 DATENAME 
    概述:返回代表指定日期的指定日期部分的字符串。
    语法:DATENAME ( datepart , date )
    示例:SELECT DATENAME(month, getdate()) AS 'Month Name' 

 DATEPART 
    概述:返回代表指定日期的指定日期部分的整数。
    语法:DATEPART ( datepart , date )
    示例:SELECT DATEPART(month, GETDATE()) AS 'Month Number' 

 GETDATE 
    概述:按datetime值的SQL Server标准内部格式返回当前系统日期和时间。
    语法:GETDATE()
    示例:SELECT GETDATE() 

 ISDATE 
    概述:确定输入表达式是否为有效的日期。返回0或1
    语法:ISDATE( expression )
    示例:DECLARE @datestring varchar(8)
            SET @datestring = '12/21/98'
            SELECT ISDATE(@datestring) 

 CONVERT
    概述:将某种数据类型的表达式显式转换为另一种数据类型。
    语法:CONVERT (data_type[(length)], expression [, style])
    示例:1.字符串转为日期。
            Style=101时,表示日期字符串为:mm/dd/yyyy格式。
            SELECT CONVERT(datetime,'11/1/2003',101)
            2.日期转为字符串。
            Style=101时,表示日期字符串为:mm/dd/yyyy 格式。
            DECLARE @dt datetime
            SET @dt='2003-1-11'
            SELECT CONVERT(varchar,@dt,101)

3.日期选项设置 
 Defalut Language
 EXEC sp_configure 'default language',[langid]
 langid是语言ID,对应系统表 syslanguages 的langid 列。 

 SET DATEFIRST
    概述:将一周的第一天设置为从 1 到 7 之间的一个数字。
            @@DATEFIRST 函数检查SET DATEFIRST 的当前设置。
    语法:SET DATEFIRST { number | @number_var }
    示例:SET DATEFIRST 1 --设置星期一为每周的第一天。

 SET DATEFORMAT
    概述:设置用于输入datetime或smalldatetime数据的日期部分(月/日/年)的顺序。
            该设置仅用在将字符串转换为日期值时的解释中。它对日期值的显示没有影响。
    语法:SET DATEFORMAT { format | @format_var }
            有效参数包括 mdy、dmy、ymd、ydm、myd 和 dym。
    示例:SET DATEFORMAT mdy

 SET LANGUAGE
    概述:指定会话的语言环境。会话语言确定datetime格式和系统信息。
    语法:SET LANGUAGE { [ N ] 'language' | @language_var }
            参数是存储在syslanguages中的语言名称。该参数可以是 Unicode,或者是转换为 Unicode 的 DBCS。
            若要指定使用 Unicode 的语言,请使用 N'language'。如果将语言指定为变量,则变量的数据类型必
            须为sysname。
    示例:SET LANGUAGE us_english