【问题标题】:SQL convert date dmmyyyy and ddmmyy to yyyy-mm-ddSQL 将日期 dmmyyyy 和 ddmmyy 转换为 yyyy-mm-dd
【发布时间】:2019-08-02 05:29:15
【问题描述】:

我有以下问题。 我有一些格式为“15122019”的日期,我需要这种格式 2019-12-15 的日期,我已经通过以下方式解决了它。

select convert (date, Stuff(Stuff('15122018',5,0,'.'),3,0,'.'),104)

真正的问题是当日期像这样“3122019”时,由于长度较短,因此无法进行转换。还有另一种方法吗?我已经尝试解决了几个小时。还有一个问题,这个查询可以参数化吗?

【问题讨论】:

  • 但是'2122018' 是什么日期?、2018-02-212018-12-02
  • 你也能缩短几个月吗?所以你可能会得到类似 312019 的东西?
  • 月份不缩短,日期为2019-12-03
  • 我的例子是 1 月 3 日。但是你会得到 3012019?
  • 我有这个 3122019 我需要这个 2019-12-03

标签: sql-server date converters


【解决方案1】:

试试这个:

 DECLARE @date VARCHAR(20)
 SET @date ='3122019'

 IF(LEN(@date) = 8)
 BEGIN  
    SET @date = Stuff(Stuff(@date,5,0,'.'),3,0,'.');
    SELECT CONVERT(DATE, @date , 103);
 END
 ELSE IF(LEN(@date) = 7) 
 BEGIN

    SET @date = Stuff(Stuff(@date,4,0,'.'),2,0,'.');
    IF(ISDATE(@date)=1)
    BEGIN
        SELECT CONVERT(DATE, @date , 103);          
    END    
    ELSE
    BEGIN
        SET @date = Stuff(Stuff(@date,4,0,'.'),3,0,'.');    
            SELECT CONVERT(DATE, @date , 103);
    END
 END
 ELSE IF(LEN(@date) = 6)
 BEGIN
     SET @date = Stuff(Stuff(@date,3,0,'.'),2,0,'.');
     SELECT CONVERT(DATE, @date , 103);
 END

【讨论】:

    【解决方案2】:

    您可以在左侧添加0,并使用right 占用8 个字符。喜欢RIGHT('0'+'15122018',8)。它适用于 15122018 和 3122018

    select convert (date, Stuff(Stuff( RIGHT('0'+'15122018',8) ,5,0,'.'),3,0,'.'),104)
    

    【讨论】:

      【解决方案3】:

      这样的对话可以通过以下方式实现:

      • 使用中间 FORMAT 转换将整数值转换为 DATE 到可识别的对话字符串模式。
        • 样式 105 应用于匹配输入为dd-mm-yyyy
        • 样式 05 匹配 dd-mm-yy

      SQL:

      -- input format: dmmyyyy
      SELECT CONVERT(DATE, FORMAT(3012019, '##-##-####'), 105)
      -- result: 2019-01-03
      
      -- input format: dmmyy
      SELECT CONVERT(DATE, FORMAT(30119, '##-##-##'), 05)
      -- result: 2019-01-03
      

      这适用于一位(和两位)数字的日期,但是,它确实需要一个两位数的月份

      【讨论】:

        猜你喜欢
        • 2017-10-21
        • 2020-06-22
        • 1970-01-01
        • 1970-01-01
        • 2013-10-25
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        相关资源
        最近更新 更多