标签: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