概述
在维护一个网站,原开发者存储日期时,都是使用int数据类型,如20120218等。现Insus.NET获取这个字段做其它处理,得先需要把它们转为DateTime数据类型。
因此产生以下这个User-Defined Functions(自定义函数):
![](https://file2.kaopuke.com:8081/files_image/2023062421/202306242107029614468.gif)
![](https://file2.kaopuke.com:8081/files_image/2023062421/202306242107023969974.gif)
CREATE
FUNCTION
[
dbo
].
[
udf_ConvertIntDatetime
]
(
@intDate INT
)
RETURNS DATETIME
AS
BEGIN
DECLARE @RTV DATETIME
SET @RTV = CONVERT( DATETIME, CAST( @intDate AS CHAR( 8)), 112)
RETURN @RTV
END
(
@intDate INT
)
RETURNS DATETIME
AS
BEGIN
DECLARE @RTV DATETIME
SET @RTV = CONVERT( DATETIME, CAST( @intDate AS CHAR( 8)), 112)
RETURN @RTV
END
上面自定义函数中一个参数112,可以参考下链接http://www.cnblogs.com/insus/articles/1554836.html最后一句。自定义函数应用:
SELECT
[
id
],
[
orderdate
],
[
dbo
].
[
udf_ConvertIntDatetime
](
[
orderdate
])
AS
[
Order_Date
]
FROM dbo.
[
orders
]
结果:
下面文字,更新于2012-02-18 17:10
发现原字段还有6位int的日期,年份只有两位,如110317等。因为Insus.NET还需要更新上面的自定义函数, 有关是使用参数12还得再参考上面链接。:
![](https://file2.kaopuke.com:8081/files_image/2023062421/202306242107029614468.gif)
![](https://file2.kaopuke.com:8081/files_image/2023062421/202306242107023969974.gif)
ALTER
FUNCTION
[
dbo
].
[
udf_ConvertIntDatetime
]
(
@intDate INT
)
RETURNS DATETIME
AS
BEGIN
DECLARE @RTV DATETIME
SET @RTV = CASE LEN( @intDate)
WHEN 6 THEN CONVERT( DATETIME, CAST( @intDate AS CHAR( 6)), 12)
WHEN 8 THEN CONVERT( DATETIME, CAST( @intDate AS CHAR( 8)), 112)
ELSE NULL
END
RETURN @RTV
END
(
@intDate INT
)
RETURNS DATETIME
AS
BEGIN
DECLARE @RTV DATETIME
SET @RTV = CASE LEN( @intDate)
WHEN 6 THEN CONVERT( DATETIME, CAST( @intDate AS CHAR( 6)), 12)
WHEN 8 THEN CONVERT( DATETIME, CAST( @intDate AS CHAR( 8)), 112)
ELSE NULL
END
RETURN @RTV
END
演示:
下面文字更新于2012-02-20 00:05
今天本是星期天,下午用户来电,说一些日期无法显示,显示为空。用户说一笔记录日期为010627时,它就显示为空。用户区域语言不一样,让该函数无法识别2位数的年份。只有指定DATEFORMAT才能正确显示日期。让Insus.NET起以前一个自定义函数,即可以解决此问题:http://www.cnblogs.com/insus/archive/2011/06/30/2094398.html
![](https://file2.kaopuke.com:8081/files_image/2023062421/202306242107029614468.gif)
![](https://file2.kaopuke.com:8081/files_image/2023062421/202306242107023969974.gif)
SELECT
[
dbo
].
[
ConvertDate
] (
'
010627
',
'
yy-MM-dd
')
SELECT [ dbo ]. [ ConvertDate ] ( ' 010627 ', ' yyyy-MM-dd ')
SELECT [ dbo ]. [ ConvertDate ] ( ' 010627 ', ' yyyy-MM-dd ')
最后
以上就是失眠水杯为你收集整理的把int类型日期转换为datetime类型日期的全部内容,希望文章能够帮你解决把int类型日期转换为datetime类型日期所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复