【问题标题】:What type is INTERVAL in the function DATEPART?函数 DATEPART 中的 INTERVAL 是什么类型?
【发布时间】:2013-10-18 12:58:46
【问题描述】:

代码select DATEPART(month,getutcdate()) 返回一个整数,表示当前日期的数字月份值。 值MONTH 是间隔参数的许多预定义选项之一。 该区间值的基础数据类型是什么?

declare @date datetime = getutcdate()
, @interval notNVarChar(16) = 'month' --what type should this be?  
                                      --Would it need quotes for assignment?

select DATEPART(@interval, @date)

【问题讨论】:

    标签: sql-server types datepart


    【解决方案1】:

    你可以通过如下的动态 SQL 使其参数化:

    declare @date datetime
    set @date = GETDATE()
    declare @option varchar(50)
    declare @sql varchar(max)
    SET @option = 'MONTH' --Here you can set other options like hour, second, milisecond etc..
    
    set @sql = 'SELECT DATEPART('+ @option + ',''' + CONVERT(varchar,@date,21)+''')'
    
    
    print @sql
    EXEC( @sql)
    

    【讨论】:

    • 嘿@RohitVyas;我愿意,但我已经给了 Damien 答案(并且每个问题只允许接受一个)。由于他的回答是官方的,而你的回答是(很好的)解决方法,我认为最好给他答案,然后给你一个赞成票。如果可以的话,我会给你两个答案。
    • 嗨@JohnLBevan,没问题,我能理解。
    【解决方案2】:

    没有 - 你不能参数化它。

    来自documentation

    DATEPART ( datepart , date )
    

    日期部分

    将返回整数的日期部分(日期或时间值)。下表列出了所有有效的 datepart 参数。 用户定义的等效变量无效。

    (我的强调

    【讨论】:

      【解决方案3】:

      有很多可用的选项,例如:

      day
      week
      hour
      minute
      second
      millisecond
      

      等等。

      请通过这个LINK

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-14
        • 1970-01-01
        • 2016-10-06
        • 1970-01-01
        • 1970-01-01
        • 2020-10-14
        相关资源
        最近更新 更多