Datetrim для datetimes - PullRequest
       2

Datetrim для datetimes

0 голосов
/ 03 июля 2018

Я хотел бы создать функцию Datetrim с аргументами datepart, datevalue. Он должен возвращать datetime из datevalue (который является 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 того же (неизвестного мне atm) типа, что и аргументы datepart функций dateadd / datediff?

Или я просто сделаю это varchar и вручную напишу даты в футляре?

1 Ответ

0 голосов
/ 03 июля 2018

вы можете использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...