SQL SERVER 2005 中的日期时间类型
SQL SERVER 2005 中的日期时间类型一.数据类型MS SQL Server 2005 有datetime 和smalldatetime 两种格式的日期时间数据类型。
注意:没有单独的日期或时间类型。
datetime数据库内部用两个4 字节的整数存储datetime 数据类型的值。
第一个4 字节存储基础日期(即1900-1-1, base date )之前或之后的日期。
日期范围为1753-1-1 至9999-12-31 。
当日期为1900-1-1 时值为0 ;之前的日期是负数;之后日期是正数。
另外一个 4 字节存储以午夜后三又三分之一(10/3 )毫秒数所代表的每天的时间。
精确度为百分之三秒(等于3.33 毫秒或0.00333 秒)。
如下表所示,把值调整到.000 、.003 、或.007 秒的增量。
查询中,我们常常需要搜索指定日期范围内的数据,比如返回1998-01-01 当天内的数据,你可能会这样写:Date >= '1998-01-01 00:00:00.000' and date <= '1998-01-01 23:59:59.999'根据上面的调整规则,其实这句语句的实际搜索范围为:date >= '1998-01-01 00:00:00.000' and date <= '1998-01-02 00:00:00.000'你会看到这包括了1998-01-02 的数据,所以最好的正确的搜索语句为:date >= '1998-01-01 00:00:00.000' and date < '1998-01-02 00:00:00.000'smalldatetimesmalldatetime 数据类型存储日期和每天的时间,但精确度低于datetime 。
SQL Server 将smalldatetime 的值存储为两个2 字节的整数。
第一个2 字节存储1900-1-1 后的天数。
另外一个2 字节存储午夜后的分钟数。
日期范围从1900-1-1 到2079-6-6 ,时间精确到分钟。
29.998 秒或更低的smalldatetime 值向下舍入为最接近的分钟,29.999 秒或更高的smalldatetime 值向上舍入为最接近的分钟。
--returns time as 12:35SELECT CAST ( '2000-05-08 12:35:29.998' AS smalldatetime )GO--returns time as 12:36SELECT CAST ( '2000-05-08 12:35:29.999' AS smalldatetime )GO二.日期时间的赋值上面说了格式,当然我们是没有办法直接赋整数给日期时间变量的。
给这些变量赋值通常是给它指定个一定格式的字符串。
SQL SERVER 会自动将字符串转换成日期格式保存的,注意:数据库中是不会保存数据格式的字符串的。
有两类格式的日期格式的字符串,SQL SERVER 会非常轻易就“认出”的。
一类是ISO 时间格式(由ISO8601 规定):yyyy-mm-ddT hh:mi:ss[.mmm] ,必须指定每一个元素,只有毫秒是可选的,时间成分以24 小时格式指定。
另一类SQL SERVER 规定的格式:没有分隔符为[yy]yymmdd[hh:mi[:ss][.mmm]] ;有分隔符为{[[yyy]y-[m]m-[d]d]|hh:mi[[:ss][.mmm]]} 。
后面这种格式中,时间和日期都是可选的(包括时间部分的秒和毫秒部分都是可选的)。
如果时间部分没有定义,那么SQL SERVER 就将子夜(midnight )时间作为默认的时间值;如果日期部分没有进行定义,那么SQL SERVER 就将1900 年 1 月1 日作为默认的日期值。
除了上面的格式,还有很多比较“模糊”的字符串日期时间格式,此时有两种处理方法:或者是使用DATEFORMAT 规定格式;或者是使用CONVERT 函数来进行显式转换。
1. 像“01/02/03 ”这个日期格式,不同国家可能解释不同:像这种情况,我们若要直接赋值给日期变量,我们就可以使用SET DATEFORMAT 来设置格式:参数包括mdy 、dmy 、ymd 、ydm 、myd 和dym 。
这些参数指出了年月日的顺序。
2. 还有很多格式,如:dd-mm-yy 、dd.mm.yy 等等,若要将这类字符串赋值给日期时间变量,我们只有使用最后的“杀手锏”了——使用CONVERT 函数来显式转换,CONVERT 的第三个参数对于日期格式和字符串格式定义如下:三.日期的输出与处理输入数据格式类似,当处理日期时间格式的数据输出时,CONVERT 函数仍然是最常用的T-SQL 函数。
当使用CONVERT 函数处理日期时间的输出格式时,我们可以使用与处理输入数据时完全相同的风格设置,唯一的区别是:处理输出数据格式时,CONVERT 函数将一个日期时间实例转换为一个字符串,而处理输入数据格式时,则是从一个字符串生成一个日期时间实例。
四.时间函数常用的时间函数如下:DATEADD :可以对时间类型的指定部分进行加减计算。
我们常常根据一个时间来构造出另外一个时间,比如下个月的今天, 本月底等等,我们应该也尽量使用DATEADD 函数来构造,它可以避免一些闰月、年底、月底之类的错误。
对一个日期时间变量直接加减一个整数和使用DATEADD(DAY, n,@D) 的功能是一样的。
DATEDIFF :该函数对两个时间变量对指定部分进行比较计算。
此函数不考虑比指定日期部分更高的粒度级别,它只考虑更低级别的部分。
对时间的比较应尽量使用本函数。
使用DATEDIFF 和DATEADD 可以对日期时间变量进行“截尾”的操作(举例见下面的常用查询)。
DATEPART :返回日期时间变量的指定部分的值。
DATENAME :返回日期时间变量的指定部分的值,和DATAPART 不同的是本函数返回的是个字符串类型。
GETDATE() 返回本机器的当前时间。
CURRENT_TIMESTAMP 变量与本函数功能相同。
GETUTCDATE() 返回本机器的当前UTC (格林尼治标准)时间。
DATEADD 、DATEDIFF 、DATEPART 和DATENAME 函数使用到一些共同的参数与缩写如下:利用上面的函数,总结一些常用的查询(可以看看是如何进行“截尾”操作的):-- 本月开始,相当于将本月的日期“截尾”SELECT DATEADD ( MONTH , DATEDIFF ( MONTH , 0, GETDATE ()), 0)-- 本年开始,相当于将本年的月份“截尾”SELECT DATEADD ( YEAR , DATEDIFF ( YEAR , 0, GETDATE ()), 0)-- 本周一,相当于将本周的日期“截尾”SELECT DATEADD ( WEEK , DATEDIFF ( WEEK , 0, GETDATE ()), 0)-- 本季度开始,相当于将本季的日期“截尾”SELECT DATEADD ( QQ, DATEDIFF ( QQ, 0, GETDATE ()), 0)-- 本月结束SELECT DATEADD ( MONTH , DATEDIFF ( MONTH , 0, GETDATE ()) + 1, 0) - 1-- 本年结束SELECT DATEADD ( YEAR , DATEDIFF ( YEAR , 0, GETDATE ()) + 1, 0) - 1-- 本周结束SELECT DATEADD ( WEEK , DATEDIFF ( WEEK , 0, GETDATE ()) + 1, 0) - 1-- 本季度结束SELECT DATEADD ( QQ, DATEDIFF ( QQ, 0, GETDATE ()) + 1, 0) - 1--足年计算法一.--使用PUBS数据库中的EMPLOYEE表。
(下同)SELECT *, DATEDIFF(YEAR, HIRE_DATE, GETDATE()) - CASE WHEN DATEADD(YEAR, DATEDIFF(YEAR, HIRE_DATE, GETDATE()), HIRE_DATE) > GETDATE() THEN 1ELSE 0ENDFROM EMPLOYEE--此法对于闰年的2月29日和平年的2月28日是相等的。
--足年计算法二.SELECT *, DATEDIFF(YEAR, HIRE_DATE, GETDATE()) - CASE WHEN 100 * MONTH(HIRE_DATE) + DAY(HIRE_DATE) > 100 * MONTH(GETDATE()) + DAY(GETDATE())THEN 1ELSE 0ENDFROM EMPLOYEE--或SELECT *, DATEDIFF(YEAR, HIRE_DATE, GETDATE()) - CASE WHEN SUBSTRING(CONVERT(VARCHAR(8), HIRE_DATE, 112), 5, 4) > SUBSTRING(CONVERT(VARCHAR(8),GETDATE(), 112), 5, 4) THEN 1ELSE 0END,SUBSTRING(CONVERT(VARCHAR(8), HIRE_DATE, 112), 5, 4), SUBSTRING(CONVERT(VARCHAR(8),GETDATE(), 112), 5, 4)FROM EMPLOYEE--此法对于闰年的2月29日和平年的3月1日是相等的。
--足年计算法三.SELECT *, DATEDIFF(YEAR, HIRE_DATE, GETDATE()) - CASE WHEN DATEPART(DAYOFYEAR, HIRE_DATE) > DATEPART(DAYOFYEAR, GETDATE()) THEN 1ELSE 0ENDFROM EMPLOYEE--此法比较简单,但是在闰年和平年3月份以后的日期时有1日的差别。
--足月计算法一.SELECT *, DATEDIFF(MONTH, HIRE_DATE, GETDATE()) - CASE WHEN DATEADD(MONTH, DATEDIFF(MONTH, HIRE_DATE, GETDATE()), GETDATE()) > GETDATE() THEN 1ELSE 0ENDFROM EMPLOYEE--足月计算法二.SELECT *, DATEDIFF(MONTH, HIRE_DATE, GETDATE()) - CASE WHEN DAY(HIRE_DATE) > DAY(GETDATE()) THEN 1ELSE 0ENDFROM EMPLOYEE--根据上面的规律,还可以写出足日、时等等。
SqlServer时间日期处理函数及字符串转换
Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
select 本年第多少周=datename(week,'2004-10-15')
,今天是周几=datename(weekday,'2004-10-15')
函数 参数/功能
GetDate( ) 返回系统目前的日期与时间
DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1
Select CONVERT(varchar(100), GETDATE(), 12): 060516
Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
4. datepart DATEPART(month, '2004-10-15') --返回 10
5. datename 返回代表指定日期的指定日期部分的字符串
SELECT datename(weekday, '2004-10-15') --返回:星期五
《sql_server_2005》_课件第三章_表和表数据操作
datetime
8
1753-1-1 ~9999-12-31 1900-1-1 ~2079-12-31
smalldatetime
4
SQL Server实用教程
2014年11月12日星期三
Page 4
3.1.4 字符类
1、字符串类型:字母、数字和符号组成,常量 使用单引号做定界符
名称 存储长度(字节) 存储数值范围 备注
Page 13
注意:向已有记录的表中添加列时,新添加字段 通常设置为允许为空,否则必须为该列指定默认 值。这样就将默认值传递给现有记录的新增字段, 否则添加列的操作将失败。另外,一个ALTER TABLE一次只能添加一个列。
SQL Server实用教程
2014年11月12日星期三
Page 14
列约束的格式为:
[CONSTRAINT
约束名] PRIMARY KEY [(列名)]:
指定列为主键 [CONSTRAINT 约束名] UNIQUE KEY [(列名)]: 指定列为唯一键 [CONSTRAINT 约束名] FOREIGEN KEY [(外键 列)] REFERENCES 引用表名(引用列):指定列为 外键,并说明引用的源表及在该表中所用的列名 [CONSTRAINT 约束名] CHECK (检查表达式):指 定列的检查约束 [CONSTRAINT 约束名] DEFAULT 默认值:指定列 的默认值
第3章 数据库中的表
3.1 SQL 数据类型 3.2 创建表 3.3 表的管理和维护 3.4 表数据的操作
SQL Server实用教程
2014年11月12日星期三
Page 1
3.1.1 精确数值型
1、 整数
sql时间转换格式convert(varchar(10),字段名,转换格式)
sql时间转换格式convert(varchar(10),字段名,转换格式)convert(varchar(10),字段名,转换格式)CONVERT(nvarchar(10),count_time,121) CONVERT为⽇期转换函数,⼀般就是在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar) 相互转换的时候才⽤到的函数的3个参数,第1个参数为,转换后的⼤⼩,第2个为转换⽇期的字段或函数,第3个为转换的格式.具体如下:0 | 0 or 100 | mon dd yyyy hh:miAM(或PM)1 | 101 | mm/dd/yy2 | 102 | yy-mm-dd3 | 103 | dd/mm/yy4 | 104 | dd-mm-yy5 | 105 | dd-mm-yy6 | 106 | dd mon yy7 | 107 | mon dd,yy8 | 108 | hh:mm:ss9 | 9 or 109 | mon dd yyyy hh:mi:ss:mmmmAM(或PM)10 | 110 | mm-dd-yy11 | 111 | yy/mm/dd12 | 112 | yymmdd13| 13 or 113 | dd mon yyyy hh:mi:ss:mmm(24⼩时制)14 | 114 | hh:mi:ss:mmm(24⼩时制)15 | 20 or 120 | yyyy-mm-dd hh:mi:ss(24⼩时制)16 | 21 or 121 | yyyy-mm-dd hh:mi:ss:mmm(24⼩时制)具体例⼦:(varchar长度可以控制所获取的数据长度,从⽽达到控制所需格式)SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2011 10:57AMSELECT CONVERT(varchar(100), GETDATE(), 1): 05/16/11SELECT CONVERT(varchar(100), GETDATE(), 2): 11.05.16SELECT CONVERT(varchar(100), GETDATE(), 3): 16/05/11SELECT CONVERT(varchar(100), GETDATE(), 4): 16.05.11SELECT CONVERT(varchar(100), GETDATE(), 5): 16-05-11SELECT CONVERT(varchar(100), GETDATE(), 6): 16 05 11SELECT CONVERT(varchar(100), GETDATE(), 7): 05 16, 11SELECT CONVERT(varchar(100), GETDATE(), 8): 10:57:46SELECT CONVERT(varchar(100), GETDATE(), 9): 05 16 2011 10:57:46:827AMSELECT CONVERT(varchar(100), GETDATE(), 10): 05-16-11SELECT CONVERT(varchar(100), GETDATE(), 11): 11/05/16SELECT CONVERT(varchar(100), GETDATE(), 12): 110516SELECT CONVERT(varchar(100), GETDATE(), 13): 16 05 2011 10:57:46:937SELECT CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967SELECT CONVERT(varchar(100), GETDATE(), 20): 2011-05-16 10:57:47SELECT CONVERT(varchar(100), GETDATE(), 21): 2011-05-16 10:57:47.157SELECT CONVERT(varchar(100), GETDATE(), 22): 05/16/11 10:57:47 AMSELECT CONVERT(varchar(100), GETDATE(), 23): 2011-05-16SELECT CONVERT(varchar(100), GETDATE(), 24): 10:57:47SELECT CONVERT(varchar(100), GETDATE(), 25): 2011-05-16 10:57:47.250SELECT CONVERT(varchar(100), GETDATE(), 100): 05 16 2011 10:57AMSELECT CONVERT(varchar(100), GETDATE(), 101): 05/16/2011SELECT CONVERT(varchar(100), GETDATE(), 102): 2011.05.16SELECT CONVERT(varchar(100), GETDATE(), 103): 16/05/2011SELECT CONVERT(varchar(100), GETDATE(), 104): 16.05.2011SELECT CONVERT(varchar(100), GETDATE(), 105): 16-05-2011SELECT CONVERT(varchar(100), GETDATE(), 106): 16 05 2011SELECT CONVERT(varchar(100), GETDATE(), 107): 05 16, 2011SELECT CONVERT(varchar(100), GETDATE(), 108): 10:57:49SELECT CONVERT(varchar(100), GETDATE(), 109): 05 16 2011 10:57:49:437AM SELECT CONVERT(varchar(100), GETDATE(), 110): 05-16-2011SELECT CONVERT(varchar(100), GETDATE(), 111): 2011/05/16SELECT CONVERT(varchar(100), GETDATE(), 112): 20110516SELECT CONVERT(varchar(100), GETDATE(), 113): 16 05 2011 10:57:49:513SELECT CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547SELECT CONVERT(varchar(100), GETDATE(), 120): 2011-05-16 10:57:49SELECT CONVERT(varchar(100), GETDATE(), 121): 2011-05-16 10:57:49.700SELECT CONVERT(varchar(100), GETDATE(), 126): 2011-05-16T10:57:49.827SELECT CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM SELECT CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM常⽤:Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49Select CONVERT(varchar(100), GETDATE(), 12): 110516Select CONVERT(varchar(100), GETDATE(), 23): 2011-05-16---常⽤实例操作:⼀、sql server⽇期时间函数 Sql Server中的⽇期与时间函数1. 当前系统⽇期、时间例如:查找当前时间select getdate()2. dateadd 在向指定⽇期加上⼀段时间的基础上,返回新的 datetime 值例如:向⽇期加上2天select dateadd(day,2,'2010-10-15') --返回:2010-10-17 00:00:00.000以此类推:向⽇期倒推⼏天或⼏个⽉也是可以的。
SQLserver时间格式
SQLserver时间格式1 convert(varchar(10),字段名,转换格式)23 CONVERT(nvarchar(10),count_time,121)4 CONVERT为⽇期转换函数,⼀般就是在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)5相互转换的时候才⽤到的函数的3个参数,第1个参数为,转换后的⼤⼩,第2个为转换⽇期的字段或函数,第3个为转换的格式. 67具体如下:8 0 | 0 or 100 | mon dd yyyy hh:miAM(或PM)9 1 | 101 | mm/dd/yy10 2 | 102 | yy-mm-dd11 3 | 103 | dd/mm/yy12 4 | 104 | dd-mm-yy13 5 | 105 | dd-mm-yy14 6 | 106 | dd mon yy15 7 | 107 | mon dd,yy16 8 | 108 | hh:mm:ss17 9 | 9 or 109 | mon dd yyyy hh:mi:ss:mmmmAM(或PM)18 10 | 110 | mm-dd-yy19 11 | 111 | yy/mm/dd20 12 | 112 | yymmdd21 11| 13 or 113 | dd mon yyyy hh:mi:ss:mmm(24⼩时制)22 14 | 114 | hh:mi:ss:mmm(24⼩时制)23 15 | 20 or 120 | yyyy-mm-dd hh:mi:ss(24⼩时制)24 16 | 21 or 121 | yyyy-mm-dd hh:mi:ss:mmm(24⼩时制)25具体例⼦:26 SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2011 10:57AM27 SELECT CONVERT(varchar(100), GETDATE(), 1): 05/16/112829 SELECT CONVERT(varchar(100), GETDATE(), 2): 11.05.1630 SELECT CONVERT(varchar(100), GETDATE(), 3): 16/05/113132 SELECT CONVERT(varchar(100), GETDATE(), 4): 16.05.1133 SELECT CONVERT(varchar(100), GETDATE(), 5): 16-05-1134 SELECT CONVERT(varchar(100), GETDATE(), 6): 16 05 1135 SELECT CONVERT(varchar(100), GETDATE(), 7): 05 16, 1136 SELECT CONVERT(varchar(100), GETDATE(), 8): 10:57:4637 SELECT CONVERT(varchar(100), GETDATE(), 9): 05 16 2011 10:57:46:827AM38 SELECT CONVERT(varchar(100), GETDATE(), 10): 05-16-1139 SELECT CONVERT(varchar(100), GETDATE(), 11): 11/05/1640 SELECT CONVERT(varchar(100), GETDATE(), 12): 11051641 SELECT CONVERT(varchar(100), GETDATE(), 13): 16 05 2011 10:57:46:93742 SELECT CONVERT(varchar(100), GETDATE(), 14): 10:57:46:96743 SELECT CONVERT(varchar(100), GETDATE(), 20): 2011-05-16 10:57:4744 SELECT CONVERT(varchar(100), GETDATE(), 21): 2011-05-16 10:57:47.15745 SELECT CONVERT(varchar(100), GETDATE(), 22): 05/16/11 10:57:47 AM46 SELECT CONVERT(varchar(100), GETDATE(), 23): 2011-05-1647 SELECT CONVERT(varchar(100), GETDATE(), 24): 10:57:4748 SELECT CONVERT(varchar(100), GETDATE(), 25): 2011-05-16 10:57:47.25049 SELECT CONVERT(varchar(100), GETDATE(), 100): 05 16 2011 10:57AM50 SELECT CONVERT(varchar(100), GETDATE(), 101): 05/16/20115152 SELECT CONVERT(varchar(100), GETDATE(), 102): 2011.05.1653 SELECT CONVERT(varchar(100), GETDATE(), 103): 16/05/20115455 SELECT CONVERT(varchar(100), GETDATE(), 104): 16.05.201156 SELECT CONVERT(varchar(100), GETDATE(), 105): 16-05-201157 SELECT CONVERT(varchar(100), GETDATE(), 106): 16 05 201158 SELECT CONVERT(varchar(100), GETDATE(), 107): 05 16, 201159 SELECT CONVERT(varchar(100), GETDATE(), 108): 10:57:4960 SELECT CONVERT(varchar(100), GETDATE(), 109): 05 16 2011 10:57:49:437AM61 SELECT CONVERT(varchar(100), GETDATE(), 110): 05-16-20116263 SELECT CONVERT(varchar(100), GETDATE(), 111): 2011/05/1664 SELECT CONVERT(varchar(100), GETDATE(), 112): 2011051665 SELECT CONVERT(varchar(100), GETDATE(), 113): 16 05 2011 10:57:49:51366 SELECT CONVERT(varchar(100), GETDATE(), 114): 10:57:49:54767 SELECT CONVERT(varchar(100), GETDATE(), 120): 2011-05-16 10:57:4968 SELECT CONVERT(varchar(100), GETDATE(), 121): 2011-05-16 10:57:49.70069 SELECT CONVERT(varchar(100), GETDATE(), 126): 2011-05-16T10:57:49.82770 SELECT CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM71 SELECT CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM72737475常⽤:76 Select CONVERT(varchar(100), GETDATE(), 8): 10:57:4677 Select CONVERT(varchar(100), GETDATE(), 24): 10:57:4778 Select CONVERT(varchar(100), GETDATE(), 108): 10:57:4979 Select CONVERT(varchar(100), GETDATE(), 12): 11051680 Select CONVERT(varchar(100), GETDATE(), 23): 2011-05-1681828384 ---常⽤实例操作:858687⼀、sql server⽇期时间函数88Sql Server中的⽇期与时间函数89 1. 当前系统⽇期、时间90 select getdate()9192 2. dateadd 在向指定⽇期加上⼀段时间的基础上,返回新的 datetime 值93例如:向⽇期加上2天94 select dateadd(day,2,'2010-10-15') --返回:2010-10-17 00:00:00.0009596以此类推:向⽇期倒推⼏天或⼏个⽉也是可以的。
dateadd函数的用法
dateadd函数的用法dateadd函数是SQL Server 2005及以上版本的内置函数,它是一种数据日期函数,可将一个日期字段向前或向后推移指定的时间,从而获得另一个日期字段。
从2008年以后,dateadd函数增加了单位参数,使其表达式的使用更加灵活,可以选择按小时、分钟、秒钟和百分秒来增加或减少日期。
dateadd函数可以在SQL语句中实现日期计算。
它至少要有三个参数,它们分别是1) 增加或减少何种类型的时间,2) 要增加或减少的时间量,3) 需要做操作的日期字段。
DATEADD(datepart, number, date)其中,datepart为日期部分,可以是小时(hh)、分钟(mi)、秒钟(ss)、百分秒(ms)、月(mm)、季度(qq)、季度(q)、年(yyyy)、以及周(wk)等;number为相应的数字,表示增加或减少的时间量;date为日期字段,可以是日期、日期文本、日期函数,当为日期或日期文本时,可以用单引号括起来。
下面以一个例子来介绍dateadd函数的用法,要求在“2015-11-1”的基础上向后推移3小时,应用dateadd函数表示为:SELECT DATEADD(hh, 3, '2015-11-1')结果显示“2015-11-1 3:00”,其中hh表示小时,3表示增加3小时,ca45表示“2015-11-1”。
SELECT DATEADD(hh, 4, DATEADD(dd, -5, getdate()))结果表示当前日期下减去5天后再推移4小时的结果。
dateadd函数也可以支持yy表示年份,本质上yy带参数和yyyy带参数是一样的,它们都表示一年,但有一点要注意,yyyy表示一整年,yy表示某年剩下部分。
比如:表示去年同一日期;上面提到的所有参数都可以组合使用,但是要注意datepart参数的选择要与date字段的类型对应,比如date[字段]为DateTime类型,如果使用mi参数,那么dateadd函数会报错,因为minutes是DateTime类型中不包含的参数。
sql日期时间函数+格式转换
sql⽇期时间函数+格式转换<⽇期时间函数>(可参考下列表格)转换函数to_date() 作⽤将字符类型按⼀定格式转化为⽇期类型:具体⽤法:to_date(‘2004-11-27’,’yyyy-mm-dd’),前者为字符串,后者为转换⽇期格式,注意,前后两者要以⼀对应。
如;to_date(‘2004-11-27 13:34:43’, ‘yyyy-mm-dd hh24:mi:ss’)多种⽇期格式:YYYY:四位表⽰的年份YYY,YY,Y:年份的最后三位、两位或⼀位,缺省为当前世纪MM:01~12的⽉份编号MONTH:九个字符表⽰的⽉份,右边⽤空格填补MON:三位字符的⽉份缩写WW:⼀年中的星期D:星期中的第⼏天DD:⽉份中的第⼏天DDD:年所中的第⼏天DAY:九个字符表⽰的天的全称,右边⽤空格补齐HH,HH12:⼀天中的第⼏个⼩时,12进制表⽰法HH24:⼀天中的第⼏个⼩时,取值为00~23MI:⼀⼩时中的分钟SS:⼀分钟中的秒SSSS:从午夜开始过去的秒数to_char():将⽇期转按⼀定格式换成字符类型SQL> select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) time from dual;1、常⽤⽇期⽅法(1)DATENAME ( datepart ,date )返回表⽰指定⽇期的指定⽇期部分的字符串。
SELECT DateName(day,Getdate()) –返回1(2)DATEPART ( datepart , date )返回表⽰指定⽇期的指定⽇期部分的整数。
SELECT DATEPART(year,Getdate()) –返回2016(3)DATEADD (datepart , number, date )返回给指定⽇期加上⼀个时间间隔后的新datetime 值。
SELECT DATEADD(week,1,GetDate()) –当前⽇期加⼀周后的⽇期(4)DATEDIFF ( datepart , startdate , enddate )返回跨两个指定⽇期的⽇期边界数和时间边界数。
SQLServer2005数据库技术网上平台作业(电大)
SQLServer2005数据库技术网上平台作业(电大)作业一单选题(总分45.00)1.实体型学生与任课教师之间具有()联系。
(3.00分)A. 多对多B. 一对一C. 多对一D. 一对多2.在文件系统阶段,数据()。
(3.00分)A. 具有物理独立性B. 具有逻辑独立性C. 无独立性D. 独立性差3.一个仓库可以存放多种产品,一种产品只能存放于一个仓库中。
仓库与产品之间的联系类型是()。
(3.00分)A. 多对多的联系B. 一对一的联系C. 一对多的联系D. 多对一的联系4.在关系运算中,选取符合条件的元组是()运算。
(3.00分)A. 连接B. 选择C. 除法D. 投影5.不属于传统数据模型的是()。
(3.00分)A. 关系数据模型B. 网状数据模型C. 层次数据模型D. 面向对象数据模型6.现有关系:学生(学号,姓名,课程号,系号,系名,成绩,为消除数据冗余,至少需要分解为()。
(3.00分)A. 3个表B. 2个表C. 4个表D. 1个表7.数据库系统软件包括DBMS和()。
(3.00分)A. 数据库应用系统和开发工具B. 数据库C. OSD. 高级语言8.一个m:n联系转换为一个关系模式。
关系的码为()。
(3.00分)A. 任意一个实体的码B. 某个实体的码C. 各实体码的组合D. n端实体的码9.数据库设计中的概念结构设计的主要工具是()。
(3.00分)A. 概念模型B. E-R模型C. 数据模型D. 新奥尔良模型10.数据库设计中的逻辑结构设计的任务是把()阶段产生的概念数据库模式变换为逻辑结构的数据库模式。
(3.00分)A. 需求分析B. 逻辑结构设计C. 物理设计D. 概念结构设计11.()是长期存储在计算机内的有组织,可共享的数据集合.(3.00分)A. 数据库系统B. 数据库管理系统C. 文件组织D. 数据库12.在数据库设计中使用E-R图工具的阶段是( )。
(3.00分)A. 概念结构设计阶段B. 数据库实施C. 需求分析阶段D. 数据库物理设计阶段13.()属于信息世界的模型,是现实世界到机器世界的一个中间层次.(3.00分)A. 概念模型B. 关系模型C. 数据模型D. E-R图14.数据库管理系统的英文缩写是()。
sqlserver中的时间和日期数据类型
所有系统日期和时间值均得自运行SQL Server实例的计算机的操作系统.
精度较高的系统日期和时间函数
SQL Server 2008使用GetSystemTimeAsFileTime()Windows API来获取日期和时间值.精确程度取决于运行SQL Server实例的计算机硬件和Windows版本.此API的精度固定为100纳秒.可通过使用GetSystemTimeAdjustment()Windows API来确定该精确度.
0001-01-01 00:00:00.0000000到9999-12-31 23:59:59.9999999(以UTC时间表示)
100纳秒
8到10
有
有
注意:Transact-SQLrowversion数据类型不是日期或时间数据类型.timestamp是rowversion的同义词,但不推荐使用.
日期和时间函数
具有datetime参数的小数精度的datetimeoffset
具有确定性
用来设置或获取会话格式的函数
函数
语法
返回值
返回数据类型
确定性
@@DATEFIRST
@@DATEFIRST
返回对会话进行SET DATEFIRST操作所得结果的当前值.
tinyint
不具有确定性
SET DATEFIRST
SET DATEFIRST {number|@number_var}
返回有关所有支持语言日期格式的信息.sp_helplanguage不是日期或时间存储过程.但是,语言设置会影响日期函数的输出.
不适用
不适用
用来验证日期和时间值的函数
函数
语法
返回值
SQL2005的数据类型详解
五、字符数据类型
字符数据类型是使用最多的数据类型。它可以用来存储各种字母、数字符号、特殊符号。一般情况下,使用字符类型数据时须在其前后加上单引号’或双引号” 。
1 CHAR
CHAR 数据类型的定义形式为CHAR[ (n) 。 以CHAR 类型存储的每个字符和符号占一个字节的存储空间。n 表示所有字符所占的存储空间,n 的取值为1 到8000, 即可容纳8000 个ANSI 字符。若不指定n 值,则系统默认值为1。若输入数据的字符数小于n,则系统自动在其后添加空格来填满设定好的空间。若输入的数据过长,将会截掉其超出部分。
DMY:31/12/1999 31-12-1999 31.12.2000
* 纯数字格式
1、REAL 数据类型
REAL数据类型可精确到第7 位小数,其范围为从-3.40E -38 到3.40E +38。每个REAL类型的数据占用4 个字节的存储空间。
2、FLOAT
FLOAT 数据类型可精确到第15 位小数,其范围为从-1.79E -308 到1.79E +308。每个FLOAT 类型的数据占用8 个字节的存储空间。 FLOAT数据类型可写为FLOAT[ n ]的形式。n 指定FLOAT 数据的精度。n 为1到15 之间的整数值。当n 取1 到7 时,实际上是定义了一个REAL 类型的数据,系统用4 个字节存储它;当n 取8 到15 时,系统认为其是FLOAT 类型,用8 个字节存储它。
一般情况下,由于CHAR 数据类型长度固定,因此它比VARCHAR 类型的处理速度快。
4、NVARCHAR
NVARCHAR数据类型的定义形式为NVARCHAR[ (n) ]。 它与VARCHAR 类型相似。不同的是,NVARCHAR数据类型采用UNICODE 标准字符集(Character Set), n 的取值为1 到4000。
SQL Server 数据库试题与答案B卷
《SQL Server 数据库》B卷系别:________班级:________学号:________姓名:________1.本试卷为闭卷考试。
2.考试时间:120分钟3.本试卷满分:100分4.试卷适用班级:09高职软件技术班一、单选题:(共2分,共30题,每小题的四个备选项中,只有一项是正确的,不选,错选均不得分)1、Microsoft SQL Server是一种基于客户机/服务器的关系型数据库管理系统,它使用( B )语言在服务器和客户机之间传送请求。
A)TCP/IP B)T-SQLC)C D)ASP2、( A )是一个图形界面的查询工具,用它可以提交T—SQL语言,然后发送到服务器,并返回执行结果,该工具支持基于任何服务器的任何数据库连接。
A)SQL Server Management Studio B)事件探查器C)SQL管理对象D)DTS3、( A )是用于存储、处理和保护数据的核心组件。
A)数据库引擎B)集成服务C)报表服务D)通知服务4、( A )是一个具有访问网络资源权限的Windows操作系统账户。
A)本地系统账户B)网络服务账户C)本地服务账户D)域用户账户5、数据库系统中负责数据库系统的建立、维护和管理的人员是( D )A)最终用户 B)应用程序员C)系统分析员 D)数据库管理员6、数据库设计过程中,( C )将E—R图转换为关系模式并进行关系规范化。
A)需求分析阶段 B)概念结构设计阶段C)逻辑结构设计阶段D)物理结构设计阶段7、强制关系中的主属性不能为空,满足以下( A )A)实体完整性B)参照完整性C)用户定义完整性D)域完整性8、数据库设计规范化的第三范式除了要满足第一、第二范式外,还要满足( C )A)每个记录的列只能有一个值B)所有非主键列的值都只能由主键列中决定C)每个非主键列都必须可以从构成主键的全部的列得到D)没有冗余数据9、用于存储数据库表和索引等数据库对象信息的文件为(A)A)主数据文件B)事务日志文件C)文本文件D)图像文件10、主键约束是非空约束和( D )的组合。
