- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要使用 MySQL 和 JPA Criteria 为日期添加一个时间间隔(两列都在表中)。我知道需要以下功能:
MySQL 的DATE_ADD
:
DATE_ADD(date,INTERVAL expr unit)
CriteriaBuilder 的函数
:
function(String name, Class<T> type, Expression<?>... args)
我还有一个创建函数表达式的类:
public class SqlFunctionExpression extends BasicFunctionExpression<String> implements Serializable {
public SqlFunctionExpression(CriteriaBuilderImpl criteriaBuilder,
Class<String> javaType,
String functionName) {
super(criteriaBuilder, javaType, functionName);
}
@Override
public String render(RenderingContext renderingContext) {
return getFunctionName();
}
}
可以像 new SqlFunctionExpression(null, String.class, "MINUTE")
那样使用来创建分钟单位。
但是,如何创建表达式 INTERVAL expr unit
其中 expr
是一个表列?
最佳答案
注册函数
public class CommonMySQLDialect extends MySQL57Dialect {
public CommonMySQLDialect() {
super();
registerFunction("date_add", new SQLFunctionTemplate(TimestampType.INSTANCE, "date_add(?1, INTERVAL ?2 ?3)"));
}
}
添加到 hibernate 配置
<property name="hibernate.dialect">yourpackage.CommonMySQLDialect</property>
准备使用
Expression<String> unit = new SqlFunctionExpression(null, String.class, "MINUTE");
Expression<Integer> num = cb.literal(10);
Expression<Date> newDate = cb.function("date_add", Date.class, cb.currentTimestamp(), num, unit);
关于java - 如何将 MySQL 的 DATE_ADD 与 JPA 条件一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63153649/
我怎样才能INSERT和ON DUPLICATE KEY如果满足特定条件则更新整行?我要更新全row如果VALUES(date_added)比 date_added 更老从表中。 我看过这篇文章: h
有区别吗: SELECT DATE_ADD('2005-01-01', INTERVAL 3 MONTH); 和 SELECT '2005-01-01' + INTERVAL 3 MONTH; 最佳答
我正在尝试通过向现有日期添加天/周/月来更新基于现有日期列的日期列 update Form_1 set `DateP1`= DATE_ADD(`Date`, INTERVAL `P1` week) w
我正在努力将 1 个月添加到 date() 并将其保存在我的数据库字段中。 我用这个 $query2 = "SELECT * ,DATE_ADD(`date_joined`,INTERVAL 30 D
我有这个列 'formatteddate',它是 varchar 现在我想得到最后 2 天 WHERE 格式化日期 > DATE_ADD(CURDATE(), INTERVAL -2 DAY) 如何将
我需要使用以下语句获取 MySQL 服务器日期: SELECT DATE_ADD(NOW(),INTERVAL 1 HOUR) - This Works as expected. 但现在我需要在数据库
SELECT DATE_ADD(`vj`.`departure`, INTERVAL sum(`run_time`) SECOND) AS arrivalTime FROM myTable vj.
我正在尝试以下 SQL: update Sales_details set due_date = DATE_ADD(last_sale_date, INTERVAL 35 DAY) where tas
在 phpMyAdmin 中尝试使用以下语法更新表中的date 字段: UPDATE MyTable SET 'date' = DATE_ADD('date', INTERVAL 7 DAY) 但是,
我试图在我的表上创建一个事件,每隔几分钟运行一次,以查看“next_run”是否现在(),如果是,则将“频率”添加到“next_run”,但每次我都会收到语法异常. 下面是表结构... LA
因此 PHP 不接受执行以下操作: $sql = "SELECT DATE_ADD('" . $this->db->escape($data['regpro_buy_date']) . "', INT
我在 MySQL 中有三个表。具有字段 id、姓名、电话、地址、id_work 的员工。 使用字段 id、名称。 缺少字段 id、name、id_staff start_date 和持续时间。 我有以
我正在运行一个查询,获取今天在 now() 的事件,并将其与过去 5 天同一时间的事件进行比较。 select count(*) ,date(timestamp) date , now() now
我想在一个过程中使用 Date_add 2 次,但它返回 0 行(虽然它应该返回行) 流程如下 select av.*, ap.*,c.* from tbl_available av left j
为什么日期字段nextdate不能通过执行以下操作按时间间隔更新? nextdate = DATE_ADD(`nextdate`, INTERVAL 30 DAY) 最佳答案 删除 nextdate
我正在尝试检索有来自 tbl_offers 的报价的产品 (tbl_product) tbl_offers 中的列 offerid,productid,discountrate,dateadded,d
| id | title | start | | 1 | smth | 2017-09-23 12:24:00| 我需要选择开始 = 当前日期 + 3 天
我有一个用户警报表,其中我们必须按照用户定义的时间间隔向用户发送警报,例如 0(仅一次)、3 个月、6 个月、1 年 所以我设计了一个这样的表格 id | user_id | ale
我编写了一些 SQL 来给出两个时间之间的日期范围,如下所示: select date_add(x.min_date, interval ((t500.id-1) * 30) minute) peri
MySQL DATE_ADD() 我正在尝试向日期字符串添加几天,并从中减去几个小时和分钟。也许这没有意义,但这就是我的意思...... INSERT INTO publication (`c
我是一名优秀的程序员,十分优秀!