2013-06-27 4 views
-1

나는이 문제에 직면하고있다. 웹 사이트에서 시간을 포장 할 때 나는 항상 0 : 00h 또는 0 : 30h를 얻고 있습니다. 이것은 기술적으로 현재 날짜의 시작 부분에 있습니다. 그러나 인간은 현재 날짜가 끝났습니다.자정 이후 24 시간 있음

데이터베이스에서 직접 시작하지 않고 0시에서 6 시까 지 하루 종일 정렬해야합니다.

저는 java, hibernate criteria, mysql datetime을 사용하고 있습니다. 감사합니다.

+1

하나의 "날"에서 다음 날로의 차단은 어디입니까? "24:59"입니까? "25:00"? –

+0

실제 답변을 얻기에 충분한 컨텍스트를 제공하지 못했습니다. 이 시간들을 다르게 분류하기를 원하십니까? 웹 페이지에서? 쿼리 결과 집합에? 시간이 데이터베이스에'Date' 객체로 저장되어 있습니까? 문자열로? 요구 사항에 대한 더 나은 설명이 필요합니다. –

+0

보류 결정에 동의합니다. 내 대답은 부분적으로 추측에 기반을 두었고, 항상 위험한 일이었습니다. 귀하가하고자하는 것을보다 자세하게 설명하기 위해 귀하의 질문을 편집 해보십시오. –

답변

1

응용 프로그램 전체에서 MySql DATETIME 데이터 유형을 사용하여 날짜와 시간을 올바르게 주문할 수 있습니다. Java와 동등한 클래스는 util.Date입니다.

컴퓨터 및 통신 업계 표준에 따르면 각 달력 날짜의 첫 번째 밀리 초는 00 : 00.000입니다. 따라서 23 : 59 : 51.000에 10 초를 더하면 다음 날 00 : 00 : 01.000이됩니다.

귀하의 비즈니스가이 특정 디스플레이에 사용하기 위해 매일의 시작과 끝을 설명하는 다른 비표준 규칙을 가지고있는 것처럼 들립니다. 괜찮아. 그러나 실제로이 규칙을 아주 정확하게 열거해야합니다. 자정은 인간의 여러 분야에서 중요합니다!

규칙에 따라 하루 정보가 [01:00:00 - 01:00:00] 사이 인 것으로 가정 해 보겠습니다.

다음과 같이 MySQL 쿼리에서 어제의 레코드를 선택할 수 있습니다.

WHERE `timestamp` >= CURDATE() - INTERVAL 1 DAY + INTERVAL 1 HOUR 
    AND `timestamp` < CURDATE() + INTERVAL 1 HOUR 
    ... 
ORDER BY `timestamp` 

이렇게하면 물건을 올바른 순서로 표시합니다. 시간은 24:01로 표시되지 않지만 23:59 이후에는 00:01을 사용합니다.

+0

이것은 간단하고 좋은 대답 인 것 같아요. 내일 다시 시도해 볼게요. 고마워요! – surfealokesea

+0

최대 절전 모드와 복잡한 조건 목록을 통합 할 수있는 방법이 없습니다. 최대 절전 모드 Order 절에 SQL을 통합하는 방법을 찾지 못했습니다. 마지막으로 나는이 값 YYYYMMDDHHMM을 사용하여 데이터베이스에 varchar 날짜 열을 만들었습니다. 여기서 00 대신 24 시간을 저장 한 다음이 열에 의해 정렬 된 목록을 가져옵니다. – surfealokesea

관련 문제