MS SQL 쿼리 질문드립니다. 0 4 1,287

by 초보자 [SQLServer] [2023.02.12 23:58:59]


등록한 날짜가 오늘을 기준으로 4일(12:00AM) 이 지났다면 '초과'를 지나지 않았다면 '정상'을 보여줍니다.

등록한 날짜가 12시(AM)를 넘었다면 등록한 날짜를 포함하지 않고, 12시(AM)을 넘기지 않았다면 등록한 날짜를 포함하여 4일을 체크합니다.

 

case1.

등록한 날짜가 2023.02.01 11:00 이라면 --(등록날짜가 12:00(AM)이전 이므로 등록한 날짜 포함하여 4일을 체크)

~ 2023.02.05 12:00정상

2023.02.05 12:01 ~초과

 

case2.

등록한 날짜가 2023.02.01 12:01 이라면 --(등록날짜가 12:00(AM)이후 이므로 등록한 날짜 다음날부터 4일을 체크)

~ 2023.02.06 12:00정상

2023.02.06 12:01 ~초과

 

--------------------------------------------------------------------------------------------------------

오늘을 기준으로 4일이 지난 글들에 대해서 '초과' '정상'을 나누어서 데이터를 보여주려고해요..

 

등록한 날짜는 12시(am)를 기준으로 등록한 날짜를 체크 4일에 포함을 할 것인지 아닌지를 구분하고,

4일 뒤 날짜의 12시(am) 까지는 '정상', 12시(am) 이후는 '초과' 를 보여주어야 합니다..

-----------------------------------------------------------------------------------------------------------------

 

case when 절을 사용하려고 했는데,

시간이 들어가서 문구가 굉장히 길어졌습니다..

확신이 없어서 질문 올립니다.

답변 부탁드립니다!

by ㅇㅇ준 [2023.02.13 11:28:18]

등록일시 >CONVERT(DATETIME, DATEADD(DAY,-4, GETDATE()), 112) 

초과


by 마농 [2023.02.13 14:03:26]

질문이 좀 이상하네요?
AM 12시 라는 표현이 의도에 맞게 사용된 것인지 의심스럽습니다.
AM 12시는 24시간 기준으로 00시를 의미합니다.(자정)
질문이 12시 이전/이후로 나뉘는 것을 보면? PM 12시(정오)를 기준으로 질문한게 아닌지?


by 초보자 [2023.02.15 23:29:58]

앗.. 죄송합니다.

PM 입니다.. 오후 12시를 의도했는데 실수로 AM 이라고 적어버렸네요 ㅠㅠ


by 마농 [2023.02.16 01:54:58]
WITH t AS
(
SELECT GETDATE() reg_dt
UNION ALL SELECT '2023-02-12 11:59:00'
UNION ALL SELECT '2023-02-12 12:00:00'
UNION ALL SELECT '2023-02-12 12:01:00'
UNION ALL SELECT '2023-02-13 11:59:00'
UNION ALL SELECT '2023-02-13 12:00:00'
UNION ALL SELECT '2023-02-13 12:01:00'
)
SELECT reg_dt
     , CASE WHEN reg_dt < DATEADD(HOUR, -24*4+12, CAST(CAST(DATEADD(HOUR, 12, GETDATE()) AS DATE) AS DATETIME))
       THEN '초과' ELSE '정상' END chk
  FROM t
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입