【问题标题】:converting to datetime time and extracting month name转换为日期时间并提取月份名称
【发布时间】:2015-07-28 11:44:32
【问题描述】:

我有一个格式为“201501”的日期,我从 excel 导入了表格,所以它不是日期时间数据类型,我想提取/返回月份名称。如何在获取月份名称的同时将此“201501”转换为日期时间。

【问题讨论】:

  • 那么那个日期是什么时候? YYYYMM ?
  • 日期时间值的日期值应该是多少?
  • 仅 YearMonth @BerndLinde 可以使用什么数据类型

标签: sql datetime sql-server-2012


【解决方案1】:

YYYYMMDD 是安全的,因此您可以:

;with t(example) as 
(
    select '201512'
)
select
    cast(example + '01' as date) as [DATE],
    datename(month, cast(example + '01' as date)) as [MONTH]
from t


DATE        MONTH
2015-12-01  December

【讨论】:

    【解决方案2】:
    select DATE_FORMAT(str_to_date(substring("201501",5,6),"%m"),"%M") ;
    

    【讨论】:

      【解决方案3】:

      如果您将日期默认为每月的第一天,则可以使用以下选项。

      declare @dt varchar(10)
      declare @year datetime
      
      set @dt = '201501'
      Set @year = convert(datetime,Substring(@dt, 1,4) + '-' + Substring(@dt, 5,2) + '-01')
      
      
      select @year
      

      【讨论】:

        【解决方案4】:
        Select DateName( month , DateAdd( month ,CAST( substring('201501',5,2) AS int),-1))
        

        【讨论】:

          【解决方案5】:

          给你:

          declare @mydate as varchar(8);
          set @mydate = '201501';
          
          SELECT
             DATENAME(MONTH,
             CAST(
                convert(VARCHAR(8), @mydate + CAST('01' AS VARCHAR(2)), 112)
             AS DATETIME))
          

          输出:January

          【讨论】:

            【解决方案6】:

            您不能直接将其转换为日期时间。 我建议的一个选项是将其拆分为年和月,然后通过添加 01 作为日期前以任何日期格式创建它:如果格式为 YYYY/MM/DD,则为 2015/01/01 最后用这个 选择日期名称(月份,'2015/01/01')

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2017-03-20
              • 2018-12-21
              • 2021-01-01
              • 2017-02-07
              • 1970-01-01
              • 1970-01-01
              • 2018-12-16
              • 1970-01-01
              相关资源
              最近更新 更多