【问题标题】:SQL Setting a Date Using variablesSQL 使用变量设置日期
【发布时间】:2021-03-18 14:37:49
【问题描述】:

我有以下 T-SQL

declare @earliest_date date;
begin
    if month(getdate()) < 7
    begin
        set @earliest_date = cast(cast(year(getdate()) -1 as varchar) + '07-01' as date)
    END
    ELSE
    begin
        set @earliest_date =  cast(cast(year(getdate()) as varchar) + '07-01' as date)
    end
end
select @earliest_date

我收到以下错误消息:

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

为什么我不断收到此错误消息?

编辑#1

这是我想要做的:

我正在尝试设置一个日期变量。如果今天日期的月份

因此,对于 1 月 - 6 月,年份为 2020 年,否则为 2021 年,以今年为例。

【问题讨论】:

  • 请解释你要做什么。
  • 202107-01 不是常规的日期时间模式...
  • 这就是解决问题的方法。该死的......我应该仔细看看。

标签: sql sql-server ssms


【解决方案1】:
declare @earliest_date date;
begin
  if month(getdate()) < 7
  begin
    set @earliest_date = cast(cast(year(getdate()) -1 as varchar(4)) + '-07-01' as date)
  END
  ELSE
  begin
    set @earliest_date =  cast(cast(year(getdate()) as varchar(4)) + '-07-01' as date)
  end
 end
 select @earliest_date

如果您想使用自己的方式,请参见上文

【讨论】:

    【解决方案2】:

    如果您想要去年的 7 月 1 日,请使用:

    datefromparts(year(getdate()) - 1, 7, 1)
    

    如果您想要今年 7 月 1 日,请使用:

    datefromparts(year(getdate()), 7, 1)
    

    如果您想要最近的 7 月,请从日期中减去 6 个月:

    datefromparts(year(dateadd(-6, month, getdate())), 7, 1)
    

    您可以将这些保存到变量中。或者只是在查询中使用它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-23
      • 2014-06-14
      • 1970-01-01
      • 2023-01-20
      • 2011-02-13
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多