有点奇怪的问,但我有一行和一行的年/月作为字符串,我正在尝试将其转换为日期格式。
不太确定这可以做到,因为它不是一个完整的日期,但值得一提。
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 |
已经看过其他帖子,但它们都源于已经完整的约会,只是基本上减少了当年的月份等等。但在这种情况下,我只有一年和一个月,我有一个字符串,需要格式化为日期年和月
答案 0 :(得分:1)
您需要选择一天(此处为本月的第一天)将包含一对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 :(得分:0)
您可以在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 )
示例强>
DECLARE @Year_Month VARCHAR(7) = '2015-02'
SELECT DATEFROMPARTS ( LEFT(@Year_Month, 4), RIGHT(@Year_Month, 2) , 1 )