CREATE
FUNCTION
[
dbo
]
.
[
udf_ConvertToChineseDate
]
(
@Date
DATETIME
)
RETURNS
NVARCHAR
(
20
)
AS
BEGIN
--
定义一个表变量
DECLARE
@Digital
TABLE
(
[
D1
]
[
TINYINT
]
NOT
NULL
,
[
D2
]
[
nvarchar
]
(
2
)
NOT
NULL
,
[
D3
]
[
nvarchar
]
(
2
)
NOT
NULL
)
--
把值填充
INSERT
INTO
@Digital
VALUES
(
0
,N
'
〇
'
,N
'
零
'
),(
1
,N
'
一
'
,N
'
壹
'
),(
2
,N
'
二
'
,N
'
贰
'
),(
3
,N
'
三
'
,N
'
叁
'
),(
4
,N
'
四
'
,N
'
肆
'
),(
5
,N
'
五
'
,N
'
伍
'
),
(
6
,N
'
六
'
,N
'
陆
'
),(
7
,N
'
七
'
,N
'
柒
'
),(
8
,N
'
八
'
,N
'
捌
'
),(
9
,N
'
九
'
,N
'
玖
'
)
--
处理接收的变量值转换为xxxx-xx-xx日期格式
DECLARE
@string
NVARCHAR
(
20
)
=
CONVERT
(
varchar
(
20
),
@Date
,
23
)
--
处理时一个临理变量
DECLARE
@dumpString
NVARCHAR
(
20
)
=
''
DECLARE
@i
INT
=
1
--
循环字符串
WHILE
@i
<=
LEN
(
@string
)
BEGIN
DECLARE
@dump
NVARCHAR
(
2
)
=
SUBSTRING
(
@string
,
@i
,
1
)
--
判断是否为数字
IF
(
@dump
LIKE
'
[0-9]
'
)
BEGIN
IF
(
@dump
=
0
AND
(
@i
=
6
OR
@i
=
9
))
--
如果第6位和第9位为0省略
SET
@dumpString
+=
N
''
ELSE
SET
@dumpString
+=
(
SELECT
[
D2
]
FROM
@Digital
WHERE
[
D1
]
=
@dump
)
END
ELSE
BEGIN
IF
@i
=
5
SET
@dumpString
+=
N
'
年
'
IF
@i
=
8
SET
@dumpString
+=
N
'
月
'
END
SET
@i
=
@i
+
1
END
RETURN
@dumpString
+
N
'
日
'
END