【问题标题】:Add some month to current date using java [duplicate]使用java向当前日期添加一些月份[重复]
【发布时间】:2020-07-26 08:56:33
【问题描述】:

我想用这种格式在当前日期添加一个月 "YYYY-MM-DD" 我想要返回日期类型的函数谢谢 示例

2020-04-13 will be 2020-05-13 

如果没有办法请我在这里如何使用 STR_TO_DATE

String requeteInsert = "INSERT INTO `jardin`.`abonnement` (`id`,`enf_id`,  `data_debut`, `date_fin`,  `type`,`description`, `statu`, `statu_paiment`) VALUES ( '" + A.getId()+  "','" + A.getEnf_id()+  " ','"  + A.getData_debut()+  "','" + A.getDate_fin()+  "','" + A.getType()+  "','" + A.getDescription()+"','" + A.getStatu()+"','" + A.getStatu_paiment()+"');";

我已经在使用 LocalDate 并且其他大多数在添加一个月后返回字符串。

非常感谢

【问题讨论】:

标签: java mysql sql date


【解决方案1】:

首先:您应该使用准备好的语句而不是在查询字符串中连接变量,这容易出错、不安全且效率低。

在进行日期计算时:您可以直接在数据库中进行算术运算。这比在应用程序代码中执行要简单一些。

在 MySQL 中,如果您想要当前日期加上 1 个月,只需执行以下操作:current_date + interval 1 month

这是您的声明示例,假设您希望在date_fin 列中使用新日期:

INSERT INTO `jardin`.`abonnement` (
    `id`,
    `enf_id`,
    `data_debut`,
    `date_fin`,
    `type`,
    `description`, 
    `statu`, 
    `statu_paiment`
) VALUES (
    ?,
    ?,
    ?,
    current_date + interval 1 month,
    ?,
    ?,
    ?,
    ?
)

或者,如果您想将一个月添加到作为参数给出的日期:

INSERT INTO `jardin`.`abonnement` (
    `id`,
    `enf_id`,
    `data_debut`,
    `date_fin`,
    `type`,
    `description`, 
    `statu`, 
    `statu_paiment`
) VALUES (
    ?,
    ?,
    ?,
    ? + interval 1 month,
    ?,
    ?,
    ?,
    ?
)

PS:日期参数应以YYYY-MM-DD 格式给出,时间部分可选(YYYY-MM-DD HH:MI:SS)。

【讨论】:

  • 感谢您的回答,这很有帮助,但有时我需要添加 3 个月或 6 个月,这取决于您的选择
  • @AyoubichEscobar: + interval 3 month, + interval 6 month, ...
  • 是的,这是最后一个解决方案,我会做 3 次,非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-09
  • 2017-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多