쿼리를 만드는 방법을 얻을 청구서 사날짜(데 도움이 필요하다)

0

질문

나를 만들어야에서 SQL 쿼리를 얻을 청구서에 따라 현재 날짜입니다. 인 회사에서,그래서 나는 단지를 만드는 데 필요 논리,필요하지 않습니다. 누구든지 나를 도울 수 있습니 번역하는 이 조건으로 SQL(눈송이)?

  • 는 경우 현재 날(오늘 날짜)사이에 일 14 27 의 달>>>얻 송장에서 14 일 현재의 달
  • 는 경우 현재 날(오늘 날짜)은 사 28 일과 31 달>>>얻 송장에서의 28 일 현재 달
  • 는 경우 현재 날(오늘 날짜)사이에 1 일 13 달>>>송장 에서 28 일의 마지막 달

사전에 감사합니다!

snowflake-cloud-data-platform sql
2021-11-23 17:55:26
2

최고의 응답

2

내가 생각하는 가장 간단한,깨끗한 옵션은 경우 문입니다. 당신이 당신의 선택과 함께 작업 그것은 거기에서 또는 그것으로 직접 where. 무엇이 더 적절에 대한 쿼리가 있습니다.

WHERE invoice_date::DATE = (CASE WHEN DAY(current_date) between 14 and 27 then DATE_FROM_PARTS(YEAR(current_date), MONTH(current_date), 14)
                                 WHEN DAY(current_date) between 28 and 31 then DATE_FROM_PARTS(YEAR(current_date), MONTH(current_date), 28)
                                 WHEN DAY(current_date) between 1 and 13  then DATEADD('month', -1, DATE_FROM_PARTS(YEAR(current_date), MONTH(current_date), 28))
                                 END)
2021-11-23 18:04:49
0
select  
   current_date()+1 your_date
   ,dateadd(day,27-(sign(FLOOR(day(your_date)/14,0))*14) 
     ,dateadd(month,sign(FLOOR(day(your_date)/14,0))-1 
     ,date_trunc(month,your_date))) your_result

개정된 솔루션입니다.

을 제거하는 불평등과 문제를 줄 아래의 배수 14 와 함께 한 달에 조정을 대신 여러 경우 문(비싼에 실행하는 규모).

enter image description here

2021-12-09 11:27:46

이 작동할 수는 있지만 코드가 꽤한다. 그것은 매우 열심히 나를 위해 이것을 보고 이해하/무엇을 예측하는 값을 반환을 위해 주어진 날짜입니다. 또한 이유를 볼 수 없습니다 그것을 실행하는 것이 더 빠르기 때문에 필요를 생성하고 비교하는 모든이 아닌 하나입니다.
David Garrison

또한,나는 당신이 필요하다고 생각하는 필터를 실행하기 전에 GREATEST. 나는 얻을 수 없습니다 이를 제대로 작동한다.
David Garrison

실행으로 빠르게 없는 경우 문이나 불평등 조건자. 당신이 올바른 이전에 대답지 않은 완벽하게 테스트-다.
Adrian White

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................