• 把int类型日期转换为datetime类型日期


    在维护一个网站,原开发者存储日期时,都是使用int数据类型,如20120218等。现Insus.NET获取这个字段做其它处理,得先需要把它们转为DateTime数据类型。

    因此产生以下这个User-Defined Functions(自定义函数):

    udf_ConvertIntDatetime
    CREATE FUNCTION [dbo].[udf_ConvertIntDatetime]
     (
        @intDate INT
     )  
    RETURNS DATETIME 
    AS 
    BEGIN 
        DECLARE @RTV DATETIME 
        SET @RTV = CONVERT(DATETIMECAST(@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还得再参考上面链接。:

    udf_ConvertIntDatetime
    ALTER FUNCTION [dbo].[udf_ConvertIntDatetime]
     (
        @intDate INT
     )  
    RETURNS DATETIME 
    AS 
    BEGIN 
        
        DECLARE @RTV DATETIME 
        SET @RTV =    CASE LEN(@intDate)
        WHEN 6 THEN CONVERT(DATETIMECAST(@intDate AS CHAR(6)),12)
        WHEN 8 THEN CONVERT(DATETIMECAST(@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

    View Code
    SELECT [dbo].[ConvertDate] ('010627','yy-MM-dd')
    SELECT [dbo].[ConvertDate] ('010627','yyyy-MM-dd')

  • 相关阅读:
    JavaSript模块化 && AMD CMD 详解.....
    js实现touch移动触屏滑动事件
    页面布局之BFC 微微有点坑
    前端代码优化
    HTTP消息头详解
    SASS
    移动互联,手机页面设计
    投身移动开发必须知道的20件事
    浅析HTML5在移动应用开发中的使用
    js数组的操作
  • 原文地址:https://www.cnblogs.com/insus/p/2357229.html
Copyright © 2020-2023  润新知