首页 文章

仅将年份和月份的字符串转换为...仅限年份和月份的日期格式

提问于
浏览
2

有点奇怪的问,但我有年和月的行和行作为字符串,我试图将其转换为日期格式 .

不太确定这可以做到,因为它不是一个完整的日期,但值得一提 .

UPDATE table
SET [Year Month] = CONVERT (DATE, [Year Month], 103)

返回

Conversion failed when converting date and/or time from character string.

数据字符串如下所示:

|Year Month|
| 2015-02  |
| 2016-06  |
| 2016-01  |
| 2020-09  |

已经看过其他帖子,但它们都源于已经完整的日期,只是基本上减少了当年的月份等等 . 但在这种情况下,我只有一年和一个月的字符串,需要格式化为日期年和月

2 回答

  • 0

    您需要选择一天(这是本月的第一天)将包含一对 year/month 的文本字段转换为有效的日期字段:

    SQL Server(将ISO date YYYY-MM-DD,YYYY / MM / DD,YYYYMMDD转换为日期):

    UPDATE table
    SET [Year Month Day] = cast([Year Month] + '-01' as DATE )
    

    Oracle(您可以明确选择格式):

    UPDATE table
    SET YearMonthDay = TO_DATE(YearMonth || '-01', 'YYYY-MM-DD' )
    
  • 1

    您可以在SQL Server 2012中使用 DATEFROMPARTS ,但您必须指定它为 DATE 的日期

    --set to first day of month
    UPDATE table
    SET [Year Month] = DATEFROMPARTS ( LEFT([Year Month], 4), RIGHT([Year Month], 2) , 1 )
    

    EXAMPLE

    DECLARE @Year_Month VARCHAR(7) = '2015-02'
    
    SELECT DATEFROMPARTS ( LEFT(@Year_Month, 4), RIGHT(@Year_Month, 2) , 1 )
    

相关问题