码迷,mamicode.com
首页 > 其他好文 > 详细

常用语句

时间:2014-12-15 13:40:22      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   os   使用   sp   for   

以复习为目的吧,整理了自己以前在学习T-SQL时的 常用语句 下载

获取当前日期时间

1 select getdate()
2 --结果:2012-07-12 06:20:58.670

获取星期几

----返回table
CREATE FUNCTION [dbo].[WeekDayName]
(    
)
RETURNS @WeekDayName TABLE([Id] INT,[WeekDayName] NVARCHAR(15))
AS
BEGIN    
    INSERT INTO @WeekDayName ([Id],[WeekDayName]) VALUES (0,Saturday‘),(1,Sunday‘),(2,Monday‘),(3,Tuesday‘),(4,Wednesday‘),(5,Thursday‘),(6,Friday‘)
    RETURN
END
----返回名称
CREATE FUNCTION [dbo].[WeekDayNameOfDate]
(
  @Date DATETIME
)
RETURNS NVARCHAR(10)
BEGIN
RETURN
    CASE (DATEPART(dw, @Date) + @@DATEFIRST) % 7
    WHEN 0 THEN Saturday‘
    WHEN 1 THEN Sunday‘
    WHEN 2 THEN Monday‘
    WHEN 3 THEN Tuesday‘
    WHEN 4 THEN Wednesday‘
    WHEN 5 THEN Thursday‘
    WHEN 6 THEN Friday‘    
  END
END

----调用表值函数 select * from dbo.WeekDayName()
----调用标量值函数select dbo.WeekDayNameOfDate(‘2012-01-03‘)
select getdate(),datename(weekday,getdate()),datepart(weekday,getdate())
--datename 返回星期名称;
--datepart 返回数值;
--例子:
select   
case   datepart(dw,getdate()) 
when   1   then   星期天 ‘ 
when   2   then   星期一 ‘ 
when   3   then   星期二 ‘ 
when   4   then   星期三 ‘ 
when   5   then   星期四 ‘ 
when   6   then   星期五 ‘ 
when   7   then   星期六 ‘ 
end

下面是一些常用的关于时间日期的方法

 

  1 select getdate()
  2 --结果2011-10-23 11:06:23.390
  3 
  4 select datediff(yyyy,getdate(),2011-01-01‘)
  5 select datediff(yyyy,getdate(),2010-1-1‘)
  6 select datediff(yyyy,getdate(),2012-1-1‘)
  7 
  8 --可用于判断数据库里面的数据是否属于同年
  9 --如果为同一年则返回0
 10 --前年日期返回负数
 11 --明后年日期返回大于零的正整数
 12 ------------------------------------
 13 --一个月第一天的
 14 Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
 15 
 16 --本周的星期一
 17 Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
 18 
 19 --一年的第一天
 20 Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
 21 
 22 --季度的第一天
 23 Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
 24 
 25 --当天的半夜
 26 Select DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)
 27 
 28 --上个月的最后一天
 29 Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
 30 
 31 --去年的最后一天
 32 Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
 33 
 34 --本月的最后一天
 35 Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
 36 
 37 --本年的最后一天
 38 Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))
 39 
 40 --本月的第一个星期一
 41 select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0) 
 42 -------------------------------------------
 43 --建立一个表,其中的记录包含有当前的日期和时间,可以添加一个DATETIME型字段,指定其缺省值为函数GETDATE()的返回值,就象这样:
 44 
 45 Create TABLE #site_log (username VARCHAR(40),useractivity VARCHAR(100),entrydate DATETIME DEFAULT GETDATE())
 46 drop table #site_log
 47 
 48 --转换日期和时间
 49 --函数GETDATE()的返回值在显示时只显示到秒。实际上,SQL Sever内部时间可以精确到毫秒级(确切地说,可以精确到3.33毫秒)
 50 Select CONVERT(VARCHAR(30),GETDATE(),9)
 51 在函数CONVERT()中你可以使用许多种不同风格的日期和时间格式
 52 日期和时间的类型:
 53 类型值   标准        输出
 54 0         Default    mon dd yyyy hh:miAM
 55 1         USA        mm/dd/yy
 56 2         ANSI    yy.mm.dd
 57 3         British/French dd/mm/yy
 58 4         German    dd.mm.yy
 59 5         Italian    dd-mm-yy
 60 6         -        dd mon yy
 61 7         -        mon dd,yy
 62 8         -        hh:mi:ss
 63 9         Default    + milliseconds--mon dd yyyy    hh:mi:ss:mmmAM(or )
 64 10        USA        mm-dd-yy
 65 11        JAPAN    yy/mm/dd
 66 12        ISO        yymmdd
 67 13        Europe    Default + milliseconds--dd mon yyyy hh:mi:ss:mmm(24h)
 68 14        -        hh:mi:ss:mmm(24h)
 69 
 70 select convert(varchar(30),getdate(),106)
 71 select convert(varchar(30),getdate(),6)
 72 /**类型0,9,和13总是返回四位的年。
 73     对其它类型,要显示世纪,把style值加上100。
 74     类型13和14返回24小时时钟的时间。
 75     类型0,7,和13返回的月份用三位字符表示(用Nov代表November)
 76     对表中所列的每一种格式,你可以把类型值加上100来显示有世纪的年(例如,00年将显示为2000年)*/
 77 
 78 --抽取日期和时间
 79 --在许多情况下,也许只想得到日期和时间的一部分,而不是完整的日期和时间。为了抽取日期的特定部分,你可以使用函数DATEPARt()
 80 
 81 select datepart(dd,getdate())
 82 select datepart(mm,getdate())
 83 select datepart(yyyy,getdate())
 84 select datepart(yy,getdate())
 85 --函数DATEPART()的参数是两个变量。第一个变量指定要抽取日期的哪一部分;第二个变量是实际的数据。在这个例子中,函数DATEPART()抽取月份,因为mm代表月份。下面是这个Select 语句的输出结果:
 86 --函数DATEPART()的返回值是一个整数
 87 
 88 --日期的各部分及其简写
 89 日期部分    简写    值
 90 year        yy        1753--9999
 91 quarter     qq        1--4
 92 month        mm        1--12
 93 day of year dy        1--366
 94 day            dd        1--31
 95 week        wk        1--53
 96 weekday     dw        1--7(Sunday--Saturday)
 97 hour        hh        0--23
 98 minute        mi        0--59
 99 second        ss        0--59
100 milisecond    ms        0--999
101 
102 --当你需要进行日期和时间的比较时,使用函数DATEPART()返回整数是有用的。要以更易读的格式得到部分的日期和时间,你可以使用函数DATENAME(),如下例所示:
103 
104 Select site_name ‘Site Name’
105 DATENAME(mm,site_entrydate) ‘Month Posted’
106 FROM site_directory
107 
108 select datename(mm,getdate())
109 
110 --函数DATENAME()和函数DATEPART()接收同样的参数
111 --它的返回值是一个字符串,而不是一个整数
112 
113 --可以用函数DATENAME()来抽取一个星期中的某一天。下面的这个例子同时抽取一周中的某一天和日期中的月份:
114 
115 select datename(dw,getdate())+-‘+datename(mm,getdate()) as Day and Month Posted‘
116 
117 --返回日期和时间范围
118 --当分析表中的数据时,也许希望取出某个特定时间的数据
119 --也许对特定的某一天中,比如说2000年12月25日――访问者在你站点上的活动感兴趣,要取出这种类型的数据,你也许会试图使用这样的Select语句
120 Select * FROM weblog Where entrydate="12/25/20000"
121 --不要这样做。这个Select语句不会返回正确的记录
122 --它将只返回日期和时间是12/25/2000 12:00:00:000AM的记录,换句话说,只有刚好在午夜零点输入的记录才被返回。
123 
124 --问题是SQL Sever将用完整的日期和时间代替部分日期和时间。
125 --例如,当你输入一个日期,但不输入时间时,SQL Sever将加上缺省的时间"00:00:00:000AM"
126 --当你输入一个时间,但不输入日期时,SQL Sever将加上缺省的日期"Jan 1 1900"。
127 --要返回正确的记录,你需要适用日期和时间范围。有不止一种途径可以做到这一点。例如,下面的这个Select 语句将能返回正确的记录:
128 
129 create table #dt(da datetime,id int)--验证sql缺省日期时间
130 insert into #dt values(2011-10-10‘,1)
131 insert into #dt values(09:10:10‘,2)
132 select * from #dt
133 drop table #dt
134 
135 Select * FROM weblog 
136 Where entrydate>=”12/25/2000” AND entrydate<”12/26/2000”
137 --这个语句可以完成任务,因为它选取的是表中的日期和时间大于等于12/25/2000 00:00:00:000AM并小于12/26/2000 00:00:00:000AM的记录。换句话说,它将正确地返回2000年圣诞节这一天输入的每一条记录。
138 --另一种方法是,你可以使用LIKE来返回正确的记录。通过在日期表达式中包含通配符"%",你可以匹配一个特定日期的所有时间。这里有一个例子:
139 
140 Select * FROM weblog Where entrydate LIKE ‘Dec 25 2000%’
141 
142 --这个语句可以匹配正确的记录。因为通配符“%”代表了任何时间。
143 --使用这两种匹配日期和时间范围的函数,你可以选择某个月,某一天,某一年,某个小时,某一分钟,某一秒,甚至某一毫秒内输入的记录。但是,如果你使用 LIKE 来匹配秒或毫秒,你首先需要使用函数CONVERT()把日期和时间转换为更精确的格式
144 
145 --比较日期和时间
146 --最后,还有两个日期和时间函数对根据日期和时间取出记录是有用的。使用函数DATEADD()和DATEDIFF(),你可以比较日期的早晚。例如,下面的Select语句将显示表中的每一条记录已经输入了多少个小时:
147 
148 select datediff(mm,getdate(),2011-10-10‘)
149 
150 --函数DADEDIFF()的参数是三个变量。第个变量指定日期的某一部分。在这个例子中,是按小时对日期进行比较,在日期2000年11月1日和2000年11月30日的指定时间之间有689个小时。另外两个参数是要进行比较的时间。为了返回一个正数,较早的时间应该先给。
151 --函数DATEADD()把两个日期相加。当你需要计算截止日期这一类的数据时,这个函数是有用处的
152 
153 
154 select dateadd(mm,-1,getdate());
155 
156 --函数DATEADD()的参数有三个变量。第一个变量代表日期的某一部分,这个例子用到了代表月份的mm。
157 --第二个变量指定了时间的间隔――在本例中是一个月。
158 --最后一个变量是一个日期
159 --注意:
160 --使用函数DATEADD()把一个日期加上一个月,它并不加上30天。这个函数只简单地把月份值加1。
161 
162 
163 ---------------------------------------
164 Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM 
165 Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06 
166 Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16 
167 Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06 
168 Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06 
169 Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06 
170 Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06 
171 Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06 
172 Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46 
173 Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM 
174 Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06 
175 Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16 
176 Select CONVERT(varchar(100), GETDATE(), 12): 060516 
177 Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937 
178 Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967 
179 Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47 
180 Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157 
181 Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM 
182 Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16 
183 Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47 
184 Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250 
185 Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM 
186 Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006 
187 Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16 
188 Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006 
189 Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006 
190 Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006 
191 Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006 
192 Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006 
193 Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49 
194 Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM 
195 Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006 
196 Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16 
197 Select CONVERT(varchar(100), GETDATE(), 112): 20060516 
198 Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513 
199 Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547 
200 Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49 
201 Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700 
202 Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827: 
203 Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM

 

各系统表的作用

 1 MSSQL中各个系统表的作用 
 2 
 3 sysaltfiles    主数据库               保存数据库的文件
 4 syscharsets    主数据库               字符集与排序顺序
 5 sysconfigures  主数据库               配置选项
 6 syscurconfigs  主数据库               当前配置选项
 7 sysdatabases   主数据库               服务器中的数据库
 8 syslanguages   主数据库               语言
 9 syslogins      主数据库               登陆帐号信息
10 sysoledbusers  主数据库               链接服务器登陆信息
11 sysprocesses   主数据库               进程
12 sysremotelogins主数据库               远程登录帐号
13 syscolumns     每个数据库             列
14 sysconstrains  每个数据库             限制
15 sysfilegroups  每个数据库             文件组
16 sysfiles       每个数据库             文件
17 sysforeignkeys 每个数据库             外部关键字
18 sysindexs      每个数据库             索引
19 sysmenbers     每个数据库             角色成员
20 sysobjects     每个数据库             所有数据库对象
21 syspermissions 每个数据库             权限
22 systypes       每个数据库             用户定义数据类型
23 sysusers       每个数据库             用户
24 
25 
26 --用什么方法可以得到一个表中所有的列名。SQl语句。
27 select   列名=name   from   syscolumns   where   id=object_id(N要查的表名‘) 
28 
29 use gpStrudy
30 select   name="name"   from   syscolumns   where   id=object_id(NbookTable‘)

goto在T-SQL中的用法


 1 /**
 2 GOTO语句可以实现无条件跳转
 3 语法格式 GOTO  lable 其中lable为要跳转到的语句标号
 4 遇到GOTO语句时直接跳转到lable标签处继续执行,而goto之后的语句不再执行
 5 **/
 6 
 7 declare @result int=0
 8 declare @sn int =0
 9 loop_1:--定义标号
10 set @result=@result+@sn
11 set @sn=@sn+1
12 if(@sn<=100)
13 goto loop_1--如果小于100就跳转到loop_1标号处
14 print @result

 

常用语句

标签:style   blog   http   io   ar   os   使用   sp   for   

原文地址:http://www.cnblogs.com/yflwz/p/4164541.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!