between문의좀 드립니다. 0 10 689

by 리카온 [SQL Query] mysql [2021.11.04 11:54:12]


안녕하세요 문의 드립니다.

mysql을 사용하는데요

utc시간때문에 interval 9 hours를 하는데

datetime의 형식에 2021-11-02 22:22:22 이렇게 들어오는 데이타입니다.

문제는 9시간을 더하면 현재 between '2020-02-01' and 어제일자로 select해서

통계테이블에 넣는데 문제는 9시간이 더해지면 어제 오후15시 이후에 생선된

데이타의 생성일자는 어제일자의 집계에 잡히지 않는데요

어떻게 해야 하나요? 

by 마농 [2021.11.04 12:52:16]

작성된 쿼리를 보여 주세요.


by 리카온 [2021.11.04 12:59:16]

네 마농님 늘 감사합니다.

select created_at 

from test_user_table

WHERE

DATE(adddate(created_at, INTERVAL 9 HOUR))  between  '2021-01-21' AND '2021-11-03'

 

 


by 마농 [2021.11.04 13:02:54]

뭐가 문제죠?
- 9시간을 더했으니 15시 이후는 안나오는게 맞을 듯 한데요?
- 15시 이후는 어제 날짜가 아닌 오늘날짜가 되겠지요.
그리고.
- Where 조건에서 9시간을 더해준 것과 마찬가지로
- Select 에서도 똑같이 9시가 더해서 출력해야 하지 않나요?


by 리카온 [2021.11.04 13:09:10]

아 그래서 질문을 드리는 이유는 9시간을 도해도 오늘날짜에 생성된 데이타는 집계에 insert를 하게끔 쿼리를 고치고자 하는데 어떻게 할지 몰라서요

하루를 더할수도 없고 현재있는 쿼리를 수정하고자 해서 문의를 드리는 겁니다.


by 마농 [2021.11.04 13:19:21]

Select 절에서 +9 해주면 되는 거 아닌지요?
그리고, 컬럼을 가공하여 조건을 주지 말고
컬럼은 그대로 두고 조건을 가공하세요.

SELECT DATE(adddate(created_at, INTERVAL 9 HOUR)) dt
     , COUNT(*) cnt
  FROM test_user_table
 WHERE created_at >= ADDDATE('2021-01-21', INTERVAL -9 HOUR)
   AND created_at <  ADDDATE('2021-11-04', INTERVAL -9 HOUR)
 GROUP BY DATE(adddate(created_at, INTERVAL 9 HOUR))
;

 


by 리카온 [2021.11.04 13:32:59]

저 WHERE에 between and yesterday자체가 9시간을 더한 날짜에 에서 하루를 뺀 전날짜입니다


by 마농 [2021.11.04 13:35:58]

조건에서도 +9 를 했단는 건가요?
양쪽다 +9 하면 안되는거 아닌가요?
한쪽만 적용해야죠?


by 리카온 [2021.11.04 13:44:19]

음 원래 시스템이 utc시간때문에 쿼리를 만드는 python date에서 today가 +9시간을 하게 되있고 그걸 받아서 sql문에 parameter로 넣게 되있는데 db컬럼에 생성일자 data를 select insert하는데 그 select문에 between으로 되있고 startdate는 박혀있는 시간이라 2021-02-01이렇게 되있는데 end를 만드는 시간이  오늘날짜에 +9를 날에서 하루를 빼서 어제날짜의 생성데이타를 가져오는데요 

기존에 있는걸 보면 9시간하니 어제 만들어진거라도 시간이 넘어가서 집계에 안들어가게 되거든요

그래서 방법이 없을까 해서요 enddate를 하루를 안하자니 그럼 오늘께 포함이 되겠고

뭐 그런 취지의 질문입니다 답변 감사드립니다


by 마농 [2021.11.04 14:01:28]

많이 헷갈리네요.
질문에 나오는 일자 관련 항목들을 다시 정리할 필요가 있습니다.
실제시간, DB시간, 시스템시간, 조건값, 집계 단위 및 기간 등등
각각을 분류하여 실제 값들을 적어주세요.


by 리카온 [2021.11.04 16:57:36]

네 저도 정리가 잘안되서..

일단 db에 들어간 날짜 자체가 utc로 계산되서  insert됩니다. 

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