【问题标题】:Looking to replace the year in SQL Server希望替换 SQL Server 中的年份
【发布时间】:2020-09-15 06:15:28
【问题描述】:

我正在使用CONVERT(varchar,DateOfBirth,101) 转换日期作为生日。

我想用当前年份显示这些日期,我试过 REPLACE 但你不能使用通配符,当我使用 DATEPART 时,它的格式不适合月份和日。我也不能添加年份,因为它们的生日完全不同。谢谢。

【问题讨论】:

  • 您能分享任何示例数据吗?
  • 你能举个输入输出的例子吗? IE。一个输入日期和所需输出的示例是什么?

标签: sql sql-server string tsql date


【解决方案1】:

如果您想以101 格式将日期显示为当前年份的字符串,一个选项使用直接format()

format(DateOfBirth, 'MM/dd/2020')

您可以动态计算当前日期:

format(DateOfBirth, concat('MM/dd/', year(getdate())))

另一方面,如果您希望结果为date,那么您可以使用datefromparts()

datefromparts(year(getdate()), month(DateOfBirth), day(DateOfBirth))

【讨论】:

  • 不错!这样做的一个极端情况是闰年 - 考虑一下生日是“2000-02-29”时会发生什么 - 这将在 2020 年有效,但在 2021 年无效;-)
【解决方案2】:

这可以帮助你:

代码CONVERT(varchar(5),GETDATE(),1) 返回此05/27 然后只需添加日期的年份

SELECT CONVERT(varchar(5),GETDATE(),1) + '/' + cast(year(getdate()) as varchar)

或者

SELECT CONVERT(varchar(5),GETDATE(),1) + '/' + convert(varchar,year(getdate()))

两者的结果:

05/27/2020 --(This is my current date n.n )

这项工作,但如果您使用类似于示例 DateOfBirth 的字符串将是变量,如果这是一个字符串 (DateOfBirth = '5/27/1987'),您需要将字符串 DateOfBirth 转换为日期:

SELECT CONVERT(varchar(5),convert(date,DateOfBirth),1) + '/' + cast(year(GETDATE()) as varchar)

或者

SELECT CONVERT(varchar(5),convert(date,DateOfBirth),1) + '/' + convert(varchar,year(GETDATE()))

两者的结果:

05/27/2020 

【讨论】:

    【解决方案3】:

    如果是日期值,可以使用 FORMAT 函数。如果是字符值,可以使用 RIGHT 和 REPLACE。

    DECLARE @dateValue DATETIME = '05/12/1999'
    DECLARE @dateCharValue VARCHAR(12) = '05/12/1999'
    
    SELECT FORMAT(@dateValue, 'MM/dd/2020')
    SELECT REPLACE(@dateCharValue, RIGHT(@dateCharValue,4),2020)
    
    --Result
    05/12/2020
    

    【讨论】:

      猜你喜欢
      • 2014-06-12
      • 2011-05-17
      • 1970-01-01
      • 2014-04-26
      • 2017-06-02
      • 2011-10-02
      • 1970-01-01
      • 2021-04-28
      相关资源
      最近更新 更多