日期时间的Datetrim

时间:2018-07-03 07:28:07

标签: sql sql-server tsql datetime

我想创建一个带有参数datepart,datevalue的Datetrim函数。它应从datevalue(它是一个datetime)返回一个datetime,该日期的每个日期部分都小于被修剪的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并在情况下手动编写日期部分?

1 个答案:

答案 0 :(得分: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