sql 에서 5 분 30 분 간격 으로 그룹 을 나 누 는 실현 방법

개발 과정 에서 문 제 를 겪 은 적 이 있 습 니 다.시간 을 30 분 으로 나 누 는 것 입 니 다.예 를 들 어 08:00-08:30 의 인원,08:30-09:00 의 인원 을 통계 하면 sql 에 이런 함수 가 없 는 것 같 습 니 다.데이터 베이스 에서 직접 찾 아 보 세 요.자바 에서 그룹 을 나 누 는 것 도 너무 낮은 것 같 습 니 다.
방법 1 사용자 정의 함수,자신 실현 시간의 30 분 변환,통계 시 호출 함수

CREATE FUNCTION `date_half_hour_format`(in_date TIMESTAMP) RETURNS TIMESTAMP
BEGIN
 DECLARE out_date TIMESTAMP;
 DECLARE s_date VARCHAR(255);
 DECLARE s_minute VARCHAR(2);
 DECLARE int_minute INT;
 
 SET s_minute = SUBSTRING(in_date, 15, 2);
 SET int_minute = CAST(s_minute AS SIGNED);
 
 IF int_minute <= 29 THEN
  SET int_minute = 0;
  SET s_date = CONCAT(LEFT(in_date, 14),'0',int_minute);
 ELSE
  SET int_minute = 30;
  SET s_date = CONCAT(LEFT(in_date, 14),int_minute);
 END IF;
  
 SET out_date = STR_TO_DATE(s_date,'%Y-%m-%d %H:%i');
 
 RETURN out_date;
  END
방법 2.c 언어 를 배 웠 을 때 c 언어 생 성 시간 은 모두 long 의 시간 스탬프 입 니 다.시간 에 대해 나 누 기 연산 을 할 수 있 습 니 다.바로 시간 long 의 값 을 30*60 으로 나 누 면 30 분 의 시간 을 얻 을 수 있 습 니 다.my sql 에는 함수 유 닉 스 가 있 습 니 다.timestamp 에서 long 의 시간 을 가 져 옵 니 다.long 에서 date 를 바 꾸 는 formunixtime

SELECT FROM_UNIXTIME((UNIX_TIMESTAMP(CURRENT_TIMESTAMP) DIV 1800)*1800)
이렇게 하면 임의의 시간 에 따라 조 를 나 눌 수 있다.
ps:SQL Server 시간 조회

select dateadd(dd,-day(getdate()) + 1,getdate()) '      '  //        

select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)) '      '  //        

select dateadd(dd,-day(dateadd(month,-1,getdate()))+1,dateadd(month,-1,getdate())) '      '  //        

select dateadd(dd,-day(getdate()),getdate()) '      '  //        

select dateadd(quarter,datediff(quarter,0,getdate())-1,0) as '          '  //               

select dateadd(quarter,datediff(quarter,0,getdate()),-1) as '          '  //               

select dateadd(quarter,datediff(quarter,0,getdate()),0) as '        '  //          

select dateadd(quarter,1+datediff(quarter,0,getdate()),-1) as '         '  //          

select dateadd(quarter,1+datediff(quarter,0,getdate()),0) as '          '  //              

select dateadd(quarter,2+datediff(quarter,0,getdate()),-1) as '          '  //              

select dateadd(year,datediff(year,0,DATEADD(year,-1,getdate())),0) '      '  //      

select dateadd(year,datediff(year,0,getdate()),-1) '      '  //       

select dateadd(year, datediff(year, 0, getdate()), 0) '      '  //      

select dateadd(year,datediff(year,0,dateadd(year,1,getdate())),-1) '       '  //       
총결산
위 에서 말 한 것 은 편집장 이 여러분 에 게 소개 한 sql 에서 시간 을 5 분 30 분 간격 으로 임의로 그룹 을 나 누 는 실현 방법 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 저 에 게 메 시 지 를 남 겨 주세요.편집장 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!

좋은 웹페이지 즐겨찾기