Конвертировать DATEDIFF из SQL Server в красное смещение - PullRequest
0 голосов
/ 01 октября 2018

У меня есть скрипт для SQL Server, который мне нужно преобразовать в красное смещение.

Вот его часть, где у меня проблема с

LEFT JOIN       
    (SELECT  
         cog.ClientId, 
         MAX(CASE me.metrickey WHEN 'contacts-employee_active_count_day_org' THEN mu.value ELSE 0 END) AS ActiveEmployees
     FROM    
         public.module_utilization mu
     JOIN    
         (SELECT  
              me.id,
              me.ChannelId + '-' + me.metrickey AS MetricKey
          FROM    
              public.module_metric me) AS me ON me.id = mu.metricid
     LEFT JOIN       
         public.contacts_client_organization cog ON cog.clientorganizationid = mu.organizationid
     WHERE   
         mu.dy >= DATEADD(Day, -30, GETDATE())
         AND me.metrickey IN ('contacts-employee_active_count_day_org')
     GROUP BY
         cog.clientid) metrics ON metrics.ClientId  = be.clientid
WHERE           
    be.organizationid = 65277
    AND be.timeworkedfrom >= DATEADD(MONTH, -6, DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0))
    AND be.timeworkedfrom < TO_CHAR(DATE_TRUNC('month', GETDATE()), 'MM/DD/YYYY')
    AND be.isdeleted IS NULL
    AND be.isvoid IS NULL

В этой строке

AND be.timeworkedfrom >= DATEADD(MONTH, -6, DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0))

Я получаю эту ошибку

Недопустимая операция: функция pg_catalog.date_diff ("неизвестно", целое, отметка времени без часового пояса) не существует;

Как я понял из-за 0

Как я могу это исправить?

1 Ответ

0 голосов
/ 01 октября 2018

Выделенная логика предложения WHERE сравнивает timeworkedfrom с датой на шесть месяцев раньше, чем первое в текущем месяце.Вы можете изменить это:

AND be.timeworkedfrom >= DATEADD(MONTH, -6, DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0))

на это:

AND be.timeworkedfrom >= date_trunc('month', current_date) - interval '6 month'
...