sqlserver @
2006
-
02
-
27
21
:
18
:
26
1
、日期格式化处理
DECLARE
@dt
datetime
SET
@dt
=
GETDATE
()
--
1.短日期格式:yyyy-m-d
SELECT
REPLACE
(
CONVERT
(
varchar
(
10
),
@dt
,
120
),N
'
-0
'
,
'
-
'
)
--
2.长日期格式:yyyy年mm月dd日
--
A. 方法1
SELECT
STUFF
(
STUFF
(
CONVERT
(
char
(
8
),
@dt
,
112
),
5
,
0
,N
'
年
'
),
8
,
0
,N
'
月
'
)
+
N
'
日
'
--
B. 方法2
SELECT
DATENAME
(
Year
,
@dt
)
+
N
'
年
'
+
DATENAME
(
Month
,
@dt
)
+
N
'
月
'
+
DATENAME
(
Day
,
@dt
)
+
N
'
日
'
--
3.长日期格式:yyyy年m月d日
SELECT
DATENAME
(
Year
,
@dt
)
+
N
'
年
'
+
CAST
(
DATEPART
(
Month
,
@dt
)
AS
varchar
)
+
N
'
月
'
+
DATENAME
(
Day
,
@dt
)
+
N
'
日
'
--
4.完整日期+时间格式:yyyy-mm-dd hh:mi:ss:mmm
SELECT
CONVERT
(
char
(
11
),
@dt
,
120
)
+
CONVERT
(
char
(
12
),
@dt
,
114
)
2
、日期推算处理
DECLARE
@dt
datetime
SET
@dt
=
GETDATE
()
DECLARE
@number
int
SET
@number
=
3
--
1.指定日期该年的第一天或最后一天
--
A. 年的第一天
SELECT
CONVERT
(
char
(
5
),
@dt
,
120
)
+
'
1-1
'
--
B. 年的最后一天
SELECT
CONVERT
(
char
(
5
),
@dt
,
120
)
+
'
12-31
'
--
2.指定日期所在季度的第一天或最后一天
--
A. 季度的第一天
SELECT
CONVERT
(
datetime
,
CONVERT
(
char
(
8
),
DATEADD
(
Month
,
DATEPART
(Quarter,
@dt
)
*
3
-
Month
(
@dt
)
-
2
,
@dt
),
120
)
+
'
1
'
)
--
B. 季度的最后一天(CASE判断法)
SELECT
CONVERT
(
datetime
,
CONVERT
(
char
(
8
),
DATEADD
(
Month
,
DATEPART
(Quarter,
@dt
)
*
3
-
Month
(
@dt
),
@dt
),
120
)
+
CASE
WHEN
DATEPART
(Quarter,
@dt
)
in
(
1
,
4
)
THEN
'
31
'
ELSE
'
30
'
END
)
--
C. 季度的最后一天(直接推算法)
SELECT
DATEADD
(
Day
,
-
1
,
CONVERT
(
char
(
8
),
DATEADD
(
Month
,
1
+
DATEPART
(Quarter,
@dt
)
*
3
-
Month
(
@dt
),
@dt
),
120
)
+
'
1
'
)
--
3.指定日期所在月份的第一天或最后一天
--
A. 月的第一天
SELECT
CONVERT
(
datetime
,
CONVERT
(
char
(
8
),
@dt
,
120
)
+
'
1
'
)
--
B. 月的最后一天
SELECT
DATEADD
(
Day
,
-
1
,
CONVERT
(
char
(
8
),
DATEADD
(
Month
,
1
,
@dt
),
120
)
+
'
1
'
)
--
C. 月的最后一天(容易使用的错误方法)
SELECT
DATEADD
(
Month
,
1
,
DATEADD
(
Day
,
-
DAY
(
@dt
),
@dt
))
--
4.指定日期所在周的任意一天
SELECT
DATEADD
(
Day
,
@number
-
DATEPART
(Weekday,
@dt
),
@dt
)
--
5.指定日期所在周的任意星期几
--
A. 星期天做为一周的第1天
SELECT
DATEADD
(
Day
,
@number
-
(
DATEPART
(Weekday,
@dt
)
+
@@DATEFIRST
-
1
)
%
7
,
@dt
)
--
B. 星期一做为一周的第1天
SELECT
DATEADD
(
Day
,
@number
-
(
DATEPART
(Weekday,
@dt
)
+
@@DATEFIRST
-
2
)
%
7
-
1
,
@dt
)