0
datetime 필드 ('scrape')를 기반으로 계산 된 mysql 데이터베이스에 새로운 열 ('closed_date')을 추가 할 준비를하고있다.mysql가 시간을 비교하는 데 도움이된다
특히, 필드 스크랩 (datetime) 시간이 오후 6시보다 길면 23시 59 분 00 분의 시간으로 스크랩 한 날짜로 closed_date를 설정하십시오. 그렇지 않으면 closed_date를 설정하여 간격 -1 일을 23:59:00의 시간으로 긁습니다.
나는 시간 비교 작업이 어려워졌습니다.
여기에 바이올린 스키마입니다 ... 여기
drop table if exists mytable;
create table mytable (
scrape datetime,
average_rating int,
number_of_ratings int,
factored_rating int);
insert into mytable
select '2014-05-29 00:13:55',5,2,3 union all
select '2014-05-29 00:14:42',4,1,5 union all
select '2014-05-29 21:08:18',12,3,1 union all
select '2014-05-30 00:14:46',11,4,2 union all
select '2014-05-30 21:08:22',8,2,12;
는 SQL의 ...
SELECT
scrape,
DATE_FORMAT(scrape,'%H:%i:%s') TIMEONLY,
DATE_FORMAT(STR_TO_DATE('18:00:00','%T'),'%T') SIXPM,
@x := IF(@TIMEONLY > @SIXPM, DATE_FORMAT(scrape, '%Y-%m-%d 23:59:00'), DATE_ADD(scrape, INTERVAL -1 DAY)) close_date
FROM mytable
결과 :
SCRAPE TIMEONLY SIXPM CLOSE_DATE
May, 29 2014 00:13:55+0000 00:13:55 18:00:00 2014-05-28 00:13:55
May, 29 2014 00:14:42+0000 00:14:42 18:00:00 2014-05-28 00:14:42
May, 29 2014 21:08:18+0000 21:08:18 18:00:00 2014-05-28 21:08:18
May, 30 2014 00:14:46+0000 00:14:46 18:00:00 2014-05-29 00:14:46
May, 30 2014 21:08:22+0000 21:08:22 18:00:00 2014-05-29 21:08:22
IF는 TIMEONLY이 경우에도 항상 FALSE입니다 SIXPM보다 큽니다.
어떤 통찰력에도 감사드립니다!
참고 ... 나는 @ 접두어로 놀아왔다. 나는 꽤 확신한다. @ SIXPM <> SIXPM,하지만 어쨌든 그것을 시도했다. –
나는 그것을 이해했다. TIMEONLY 필드는 IF 비교에 사용할 수 없으므로 다른 임시 필드 (@tim)를 만들어야했습니다. 8 시간의 지연이있을 때 답변을 게시 할 것입니다. –