【问题标题】:Interval from startdate after current date从 startdate 到当前日期的间隔
【发布时间】:2010-11-05 09:54:31
【问题描述】:

我有以下问题:

这是我的创建表:

CREATE TABLE `mod_users` (
  `u_id` int(11) NOT NULL auto_increment,
  `u_date` datetime NOT NULL,
  `u_type` int(1) NOT NULL default '',
  `u_adddate` datetime NOT NULL,
  PRIMARY KEY  (`u_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

u_type 包含一个表示区间类型的 int (doh)。

1 = one week
2 = two weeks
3 = one month
4 = one year

我想选择当前日期之后的第一个日期,它属于 u_type 的间隔 - 一天(所以一周变成 6 天,2 周变成 13 天,一个月变成:1 个月 - 1 天,一个year 变为:一年 -1 天),以 u_date 开始。听起来很混乱。

一个例子: 如果用户具有类型 1(一周)和 u_date 2010-11-01 00:00:00(四天前),我想在一周后获得第一次出现。在这种情况下'SELECT DATE_ADD(u_date,INTERVAL 6 DAYS) from mod_users WHERE u_id = 1';(给出 2010-11-07 00:00:00)我如何为 u_type 3 或 4 执行此操作?像'SELECT DATE_ADD(u_date,INTERVAL 1 MONTH - 1 DAYS) from mod_users WHERE u_id = 1';??这不是一个有效的查询。

另外,如果当前日期是 2010-11-08,我希望在此日期之后获得第一次出现。在这种情况下,2010 年 11 月 14 日。 00:00:00。这将拒绝此查询'SELECT DATE_ADD(u_date,INTERVAL 6 DAYS) from mod_users WHERE u_id = 1'; 因为 6 天不是此查询的正确间隔。

希望你们中的一些人能提供帮助?我可以使用 php 和 mysql,所以这些查询仅用作示例。我真的被困在这里,所以只是提示或线索将不胜感激。

【问题讨论】:

  • 同时我已经用 SELECT u_date - INTERVAL 1 DAY + INTERVAL 1 MONTH AS C from mod_users WHERE u_id = 1 解决了第一个问题

标签: php mysql datetime


【解决方案1】:

在 MySQL 中,您可以将时间间隔直接添加到日期时间字段,因此 u_date + INTERVAL 1 MONTH - INTERVAL 1 DAY 应该可以正常工作。

【讨论】:

  • 我发现了。看看我几分钟前的评论:)
猜你喜欢
  • 2021-07-23
  • 2021-08-13
  • 2012-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-14
  • 1970-01-01
  • 2015-02-09
相关资源
最近更新 更多