首页 文章

日期时间的Datetrim

提问于
浏览
1

我想创建一个带有参数datepart,datevalue的Datetrim函数 . 它应该从datevalue(这是一个日期时间)返回一个日期时间,其中每个日期部分都小于修剪的datepart参数 .

例如:

(year,'20180703 11:32:45.333') 应该返回 20180101 00:00:00.000

(month,'20180703 11:32:45.333') 应该返回 20180701 00:00:00.000

我想主体的代码将是datepart上的一个案例,其中包含所有可能的dateadd-datediff组合 . 问题是,我可以让我的datepart参数与dateadd / datediff函数的datepart参数相同(我不知道atm)类型吗?

或者我只是将它变为varchar并手动编写caseparts?

1 回答

  • 0

    您可以将 dateadd()datediff() 一起使用,如下所示

    declare @dt datetime = '20180703 11:32:45.333',
            @flag  int   = 1
    
    select  dateadd(year,  datediff(year, 0, @dt), 0)  as [Year],
            dateadd(month, datediff(month, 0, @dt), 0) as [Month],
            case @flag  
            when 1 then dateadd(year, datediff(year, 0, @dt), 0)
            when 2 then dateadd(month, datediff(month, 0, @dt), 0)
            end
    

相关问题