Как получить фактическую временную метку минус 2 месяца и первый день без временной части в базе данных h2? - PullRequest
0 голосов
/ 09 марта 2020

В H2 я хотел бы получить фактическую метку времени минус 2 месяца и в первый день месяца без временной части?

например: 2020-03-09 13:46:55 => 2020 -01-01 00: 00: 00

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 09 марта 2020
SELECT DATE_TRUNC('MONTH', TIMESTAMP '2020-03-09 13:46:55' - INTERVAL '2' MONTH)

/

SELECT DATE_TRUNC('MONTH', LOCALTIMESTAMP - INTERVAL '2' MONTH)

следует использовать в последних выпусках H2. Однако он не поддерживается историческими c версиями.

FORMATDATETIME работает медленно, имеет другие известные ошибки и выдает значение VARCHAR, которое требует дополнительного неявного или явного приведения обратно к значение datetime.

2 голосов
/ 09 марта 2020

Попробуйте это:

select FORMATDATETIME(DATEADD(mm,-2,CURRENT_DATE) ,'Y-MM-01');
...