SQL Dynamic DatePart when using DateDiff
Таким образом, вы, вероятно, застрял с динамическим SQL или с помощью сазе.
В принципе, вам нужно хранить DATEPART и номер применить DATEADD (datepart , number , date)
к дате. Разделение одной строки на каждое значение может быть слишком ресурсоемким, поэтому было бы лучше использовать два отдельных поля: char(1)
для datepart и smallint
(-32,768 до 32,767 должно быть достаточно) для номер, чтобы сэкономить на пространстве для хранения.
Без пользовательских функций и динамической поддержки SQL в SQL Server Compact единственным вариантом для реализации логики, кажется, через CASE
заявление:
SELECT
CASE [datepart]
WHEN 'y' THEN DATEADD (yy, [number], [date])
WHEN 'm' THEN DATEADD (mm, [number], [date])
WHEN 'w' THEN DATEADD (ww, [number], [date])
ELSE DATEADD (dd, [number], [date])
END As [New Date]
FROM ...