【问题标题】:Get first day of the set year获取设定年份的第一天
【发布时间】:2021-06-08 22:41:25
【问题描述】:
declare @coyear varchar (max) 
set @coyear = '2018'
SELECT (YEAR(DATEADD(year,0,@coyear))) 

我已将 @coyear 设置为 2018 年,结果是 2018 年。 我想要我为一年设定的一年的第一天。 例如,当我在 @coyear 中传递 2018 年时,我希望结果为 2018-01-01。

【问题讨论】:

  • DATEFROMPARTS() ?
  • 在收到答案后完全改变问题并使其无效,这是严重不赞成的,@Anuragsharma,请不要这样做。 Ask a new question 因为您似乎对我的回答下的 cmets 中表达的内容有不同的问题。
  • declare @coyear varchar (max) 想想你的代码!为什么这被声明为字符串?为什么是 20 亿个字符的字符串?学习坏习惯是一种糟糕的开始方式。

标签: sql sql-server tsql


【解决方案1】:

DATEFROMPARTS 似乎是一个更好的解决方案:

DECLARE @CoYear int; --Why would you need 2GB/2 Billion characters for a year?
SET @CoYear = 2018;
SELECT DATEFROMPARTS(@CoYear, 1, 1);

【讨论】:

  • 谢谢拉努。是的,那是错误的。
  • 如果我想得到最后一天,例如 2018-12-31 。我试过 SELECT DATEFROMPARTS(@CoYear, +1, -1);但没有帮助。提前致谢
  • 使用EOMONTH 获取本月的最后一天,@Anuragsharma。
  • 另外,-1 作为DATEFROMPARTS 的参数没有意义。如果您不明白它的作用,请查看它的 documentation
  • @Larne 如果我想要任何一年的任何一个月的最后一天。我试过这个 declare comonth int ='12' declare coyear int ='2018' SELECT EOMONTH(comonth, coyear) 。但它没有帮助。提前致谢
【解决方案2】:

通过使用 DATEFROMPARTS

DECLARE @Year INT = 2021;

SELECT DATEFROMPARTS(@Year, 1, 1) AS Result;

【讨论】:

    【解决方案3】:

    所有版本。试试这个:

    DECLARE @Year int = 2018
    SELECT CONVERT(date, LTRIM(@Year))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-29
      • 1970-01-01
      • 1970-01-01
      • 2019-03-20
      • 1970-01-01
      • 2017-12-04
      • 2014-11-21
      • 1970-01-01
      相关资源
      最近更新 更多