【问题标题】:calendar database query with repeat interval function in postgrespostgres中具有重复间隔功能的日历数据库查询
【发布时间】:2013-08-30 01:51:18
【问题描述】:

我有三个用于日历功能的表。 说event 表有event_iddescription 等。

event_schedule 表有event_idevent_start_dateevent_end_date

event_repeat 表有event_Schedule_idevent_start_date

repeats(可以是每周、每月、每天、每年) 和repeat_every(1,2,3 这是间隔)

repeat_on(mon,tue,wed,etc.sometimes blank) and starts_on(开始日期与 event_schedule 表中的日期相同)和 ends_never(可能继续进行) end_occurences(没有发生), ends_on 是结束日期, event_schedule_id 映射到事件日程表和 repeated_by_month 是(如果每月这将有助于确定其月初是周末) 请找到表结构

CREATE TABLE events
(
  event_id serial NOT NULL,
  event_name text,
  city text,
  description text,
  active_status text,
  discount text,
  user_id integer,
  inserted_date timestamp without time zone,
  modified_date timestamp without time zone,
  state text,
  CONSTRAINT event_pkey PRIMARY KEY (event_id ),
  CONSTRAINT event_user_id_fkey FOREIGN KEY (user_id)
      REFERENCES users (user_id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE CASCADE
)

CREATE TABLE event_schedules
(
  schedule_id serial NOT NULL,
  schedule_mode text,
  start_date date,
  end_date date,
  start_time time without time zone,
  end_time time without time zone,
  repeat text,
  activity_id integer,
  business_hours text,
  modified_date timestamp without time zone,
  CONSTRAINT event_schedules_pkey PRIMARY KEY (schedule_id ),
  CONSTRAINT event_schedules_event_id_fkey FOREIGN KEY (event_id)
      REFERENCES events (event_id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE CASCADE
)


CREATE TABLE event_repeats
(
  repeat_id serial NOT NULL,
  repeats text,
  repeat_every text,
  repeat_on text,
  starts_on date,
  ends_never boolean,
  end_occurences text,
  ends_on date,
  event_schedule_id integer,
  modified_date timestamp without time zone,
  repeated_by_month boolean,
  repeat_week text,
  CONSTRAINT event_repeats_pkey PRIMARY KEY (repeat_id ),
  CONSTRAINT event_repeats_event_schedule_id_fkey FOREIGN KEY (event_schedule_id)
      REFERENCES event_schedules (schedule_id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE CASCADE
)

【问题讨论】:

  • 请清理您的问题并使其可读
  • 抱歉,我希望能帮上忙,但无法读取 blob...
  • 如果这是“使用 PostgreSQL”,那么为什么要使用 MySQL 标签?寻找可移植代码? '因为如果是这样,那么在日期操作方面祝你好运。要回答这类问题,我真的希望您的表结构包含一些示例数据,如 CREATE TABLEINSERT 语句,以及一些预期结果。适合粘贴到sqlfiddle.com 以进行测试/实验的东西。
  • 我已经给出了表结构。请找到它们。我正在使用 postgresql。
  • 请找到数据为sqlfiddle.com/#!1/66ece的url

标签: sql database postgresql


【解决方案1】:

我认为您将不得不仅将“重复”计划用于初始计划。事情可能会重新安排,因此您不想依赖它作为权威。定期(可能每月一次?)您可能希望通过并使用该逻辑来创建新事件。要完成这项工作,您必须在日程安排表中添加“most_recent_repeat”字段或类似字段,这可以是日期或自加入。无论如何,每个事件都应该有自己的调度条目。

如果这不能回答您的问题,则不清楚您在问什么。或许你可以澄清一下?

【讨论】:

    猜你喜欢
    • 2017-05-25
    • 2013-02-19
    • 2023-03-24
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多