2017-05-09 1 views
1

날짜를 00으로 설정하려고하는데 formatdatetime (날짜, 'Y-MM-dd HH : 00 : 00')을 사용하고 정상적인 날짜는 정상적으로 작동하지만 formatdatetime ('2017-01-01 12:27:27', 'Y-MM-dd HH : 00 : 00')을 사용하면 결과는 2016-01-01 12:00 : 00 대신 2017-01-01 12:00:00. 왜?H2 FORMATDATETIME() 01/01에 변화가 예상되지 않음

CREATE TABLE test_table (
timestamp DATETIME(3) NOT NULL 
); 

INSERT INTO test_table 
VALUES 
('2017-01-01 12:27:27'), 
('2017-01-02 12:27:27'), 
('2017-01-03 12:27:27'); 

SELECT FORMATDATETIME(timestamp, 'Y-MM-dd HH:00:00') 
FROM test_table; 

결과는 다음과 같습니다 :

FORMATDATETIME(TIMESTAMP, 'Y-MM-dd HH:00:00') 
2016-01-01 12:00:00 
2017-01-02 12:00:00 
2017-01-03 12:00:00 

왜이 동작 다음은

은 몇 가지 예제 코드?

H2 1.4.192/JDK 1.7.0_80 및 H2 1.4.195/JRE 1.8.0_74를 사용해 보았습니다.

SELECT timestamp FROM test_table의 출력은 정상입니다 :

TIMESTAMP ▼ 
2017-01-01 12:27:27.0 
2017-01-02 12:27:27.0 
2017-01-03 12:27:27.0 

편집 :

출력 SELECT FORMATDATETIME(timestamp, 'Y-MM-dd HH:00:00 z', 'it', 'GMT') FROM test_table에서 :

FORMATDATETIME(TIMESTAMP, 'Y-MM-dd HH:00:00 z', 'it') 
2016-01-01 12:00:00 CET 
2017-01-02 12:00:00 CET 
2017-01-03 12:00:00 CET 

출력 내가 문제를 발견했습니다, 그것은 로케일 것 같다 SELECT FORMATDATETIME(timestamp, 'Y-MM-dd HH:00:00 z', 'en', 'GMT') FROM test_table :

FORMATDATETIME(TIMESTAMP, 'Y-MM-dd HH:00:00 z', 'en') 
2017-01-01 12:00:00 CET 
2017-01-02 12:00:00 CET 
2017-01-03 12:00:00 CET 

it 로캘의 경우 01/01/2017에 1 년을 뺀 반면 en 로캘에서는 그렇지 않습니다. 왜 이런 일이 일어 났는지 설명 할 수 있습니까? 로케일은 데이터 표현 만 변경하면 안됩니까? 그의 의견에 헨드릭에 의해 제안

H2 사용, 자바 SimpleDateFormat에 날짜를 포맷하기 : 확인 문제가 해결

+1

문제점을 재현하려했지만 실패했습니다. 사용중인 H2 및 Java 버전에 대해 언급 할 수 있습니다. 또한,'SELECT timestamp FROM test_table; '의 결과는 무엇입니까? 그리고'FORMATDATETIME()'호출에서 목표 시간대를 지정하면 어떨까요? – hendrik

+0

더 많은 개발로 편집 됨 – user1781028

+1

H2는 내부적으로 SimpleDateFormat을 사용한다고 가정합니다. 'SimpleDateFormat'을 사용하여 문제를 재현 할 수 있습니까? – hendrik

답변

0

, 그것은 날짜 형식에 대한 나의 오해였다. SimpleDateFormat formats 다음에 'Y'(대문자)는 주년 (해당 주간의 소속 연도)을 나타냅니다.

지금 01/01/2017은 일요일이었습니다. 이탈리아어 로케일 (내 컴퓨터에서 사용)에서는 일요일이 주중 마지막 날로 간주되므로 (2016 년은 지난 주에 속합니다), 국제 표준 (en 로케일에서도)은 일요일이 2017 년에 속한 주 첫날.

관련 문제