T-SQL:修改日期,只有几天和几个月

时间:2018-05-21 18:46:57

标签: sql sql-server tsql sql-server-2016

在SQL Server 2016中,在一个表中,我想将日期列更改为:

Public Sub test()
    Dim ACHRowCount As Long

    With ActiveSheet '<= change to actual sheet name
        ACHRowCount = .Range("Q" & .Rows.Count).End(xlUp).Row
        .Cells(ACHRowCount, 18).Offset(2, 0).Formula = "=SUMIF(S3:S" & ACHRowCount & ", ""<0"",T1:T3)"
    End With

End Sub

对于下面的一个,只改变数月和日到05-20,只保留年份!

1936-12-15
1928-11-04
1940-09-18
1933-04-26
1942-08-17

我尝试了以下内容:

1936-05-20
1928-05-20
1940-05-20
1933-05-20
1942-05-20

但它增加了所有日期的5个月!

请帮忙。谢谢。

3 个答案:

答案 0 :(得分:4)

您似乎在使用SQL Server:

UPDATE [column]
    SET [column] = datefromparts(year(column), 5, 20);

在早期版本的SQL Server中,您可以执行以下操作:

UPDATE [column]
    SET [column] = datename(year, column) + '0520'

这会自动将字符串转换为正确的日期(尽管您也可以添加明确的cast() / convert())。

答案 1 :(得分:1)

使用FORMATMESSAGE

UPDATE tab
SET col = FORMATMESSAGE('%i0520',YEAR(col));

<强> DBFiddle Demo

答案 2 :(得分:1)

UPDATE [Table]
  SET [column] = FORMAT([column],'yyyy-05-20')