DATE_SUB 和 DATE_ADD 在 H2 中 MySQL
DATE_SUB and DATE_ADD in H2 for MySQL
我使用 MySQL 作为我的数据库和 H2 进行测试。我也在使用 playframework 2.3.x 和 Scala,但我认为对于问题的目的并不重要。
H2 与我在查询中使用的一些函数有冲突
SELECT *
FROM subscriptions
WHERE active_until >= (DATE_SUB(CURDATE(), INTERVAL 3 DAY))
AND active_until <= (DATE_ADD(CURDATE(), INTERVAL 1 DAY))
AND status = "ACTIVE"
导致问题的函数是DATE_SUB和DATE_ADD。
是否有解决方法可以让我完成这项工作或更改查询而不破坏它 mysql?
终于解决了。我不得不将 DATE_ADD
更改为 TIMESTAMPADD
,将 DATE_SUB
更改为 TIMESTAMPDIFF
。然后我把CURDATE()
改成了CURRENT_DATE
。方法的符号也发生了变化,但对 H2 和 My 都有效。
SELECT *
FROM subscriptions
WHERE active_until >= (TIMESTAMPDIFF(DAY, 3, CURRENT_DATE))
AND active_until <= (TIMESTAMPADD(DAY, 1, CURRENT_DATE))
AND status LIKE 'ACTIVE'
这是我的例子。 TIME_TO_BEGIN 是 TIMESTAMP 类型。 “DATEADD”函数名和参数如“MONTH”应全部大写。
CREATE TABLE BLOCKED_BIN_RANGE (
BLOCKED_BIN_RANGE_ID BIGINT not null,
TIME_TO_BEGIN TIMESTAMP not null,
USER_NAME VARCHAR(30) not null
);
Insert into BLOCKED_BIN_RANGE (BLOCKED_BIN_RANGE_ID,TIME_TO_BEGIN, USER_NAME)
values (304, DATEADD('MONTH', 1, CURRENT_TIMESTAMP), 'BILL');
我使用 MySQL 作为我的数据库和 H2 进行测试。我也在使用 playframework 2.3.x 和 Scala,但我认为对于问题的目的并不重要。
H2 与我在查询中使用的一些函数有冲突
SELECT *
FROM subscriptions
WHERE active_until >= (DATE_SUB(CURDATE(), INTERVAL 3 DAY))
AND active_until <= (DATE_ADD(CURDATE(), INTERVAL 1 DAY))
AND status = "ACTIVE"
导致问题的函数是DATE_SUB和DATE_ADD。
是否有解决方法可以让我完成这项工作或更改查询而不破坏它 mysql?
终于解决了。我不得不将 DATE_ADD
更改为 TIMESTAMPADD
,将 DATE_SUB
更改为 TIMESTAMPDIFF
。然后我把CURDATE()
改成了CURRENT_DATE
。方法的符号也发生了变化,但对 H2 和 My 都有效。
SELECT *
FROM subscriptions
WHERE active_until >= (TIMESTAMPDIFF(DAY, 3, CURRENT_DATE))
AND active_until <= (TIMESTAMPADD(DAY, 1, CURRENT_DATE))
AND status LIKE 'ACTIVE'
这是我的例子。 TIME_TO_BEGIN 是 TIMESTAMP 类型。 “DATEADD”函数名和参数如“MONTH”应全部大写。
CREATE TABLE BLOCKED_BIN_RANGE (
BLOCKED_BIN_RANGE_ID BIGINT not null,
TIME_TO_BEGIN TIMESTAMP not null,
USER_NAME VARCHAR(30) not null
);
Insert into BLOCKED_BIN_RANGE (BLOCKED_BIN_RANGE_ID,TIME_TO_BEGIN, USER_NAME)
values (304, DATEADD('MONTH', 1, CURRENT_TIMESTAMP), 'BILL');