【问题标题】:DATEADD, DATEPART not returning desired resultsDATEADD、DATEPART 未返回所需结果
【发布时间】:2012-04-23 15:04:22
【问题描述】:

我不确定我的大脑是否在工作,因为现在是星期一。我想在当前年份中添加一年,但结果不理想。

这是我得到的:

select current_timestamp 
Output:2012-04-23 09:57:45.777

select DATEADD(YEAR, 1, DATEPART(YEAR,current_timestamp)) 
Output: 1906-07-06 00:00:00.000

select DATEPART(year,current_timestamp) 
Output: 2012

像这样简单的事情,由于某种原因,我没有发现问题。

【问题讨论】:

    标签: sql-server-2008 dateadd datepart


    【解决方案1】:
    select DATEADD(YEAR, 1, current_timestamp)
    

    如果你只想要日期部分:

    select DATEADD(d, 0, DATEDIFF(d, 0, DATEADD(YEAR, 1, current_timestamp) ))
    

    【讨论】:

    • 哈!我知道这是一件愚蠢的事情。我想把我的 DATEPART 放在外面而不是里面。 IE。选择 DATEPART(YYYY, DATEADD(YEAR, 1, current_timestamp))
    • 在上面的示例中,我试图只返回年份:选择 DATEADD(YEAR, 1, DATEPART(YEAR,current_timestamp)) 但我需要像这样执行日期部分:选择 DATEPART(YYYY , DATEADD(YEAR, 1, current_timestamp))
    【解决方案2】:

    你可以试试这个吗?

    选择 DATEPART(YYYY,(DATEADD(YEAR, 1,current_timestamp)))

    --结果是2016

    【讨论】:

      【解决方案3】:
      select DATEADD(YEAR, 1, current_timestamp)
      

      【讨论】:

        【解决方案4】:
        SELECT cast(DATEPART(YEAR,current_timestamp) as datetime);
        

        去 返回 1905-07-10 00:00:00.000 这就是问题

        select dateadd(year,1, current_timestamp);
        

        去 返回 2017-07-25 23:13:49.700

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-24
          • 1970-01-01
          • 1970-01-01
          • 2017-10-26
          • 1970-01-01
          相关资源
          最近更新 更多