› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
sunzy
V2EX  ›  MySQL

活动表,日期存储及查询怎么设计

  •  
  •   sunzy · Aug 23, 2023 · 2753 views
    This topic created in 1140 days ago, the information mentioned may be changed or developed.

    活动的时间有几种形式:

    1. 年月日 2023/8/1 - 2023/8/15
    2. 月日 8/1 - 8/15
    3. 月份 3,4,8,9

    要通过日期来查询和排序,如果只是日期查询还好一些,可以用一个日期->活动的索引表来解决,关键还有其他字段的查询。。。

    10 replies  •  2023-08-24 16:26:02 +08:00
    xuelang
        1
    xuelang  
       Aug 24, 2023
    将开始日期和结束日期作为单独的字段存储。

    ```
    CREATE TABLE activities (
    id SERIAL PRIMARY KEY,
    start_date DATE,
    end_date DATE,
    -- 其他字段
    );
    ```

    查询和排序:
    SELECT * FROM activities
    WHERE start_date >= '2023-08-01' AND end_date <= '2023-08-15'
    ORDER BY start_date;
    sunzy
        2
    sunzy  
    OP
       Aug 24, 2023
    @xuelang 感谢回答,这种只能满足第一种形式
    kongkx
        3
    kongkx  
       Aug 24, 2023 via iPhone
    参考一下 ical data model 。 这几种形式可以配合类型标记,进行 Humanize 展示
    sunzy
        4
    sunzy  
    OP
       Aug 24, 2023
    @kongkx 多谢!我看看去~
    xiaohundun
        5
    xiaohundun  
       Aug 24, 2023
    把 yyyy-mm-dd 拆开都存下来呢
    dode
        6
    dode  
       Aug 24, 2023 via Android
    日期数据库归一化
    sunzy
        7
    sunzy  
    OP
       Aug 24, 2023
    @xiaohundun 跨年如何查询呢?
    xiaohundun
        8
    xiaohundun  
       Aug 24, 2023
    时间拆为年月日之后,用 between and 确定各个部份的范围不就好了么,如果不是范围那就用字面量条件,不挺简单,难道我没理解你的意思?
    sunzy
        9
    sunzy  
    OP
       Aug 24, 2023
    @xiaohundun 比如:12/1 - 2/1 这种可以用 between and ?
    xiaohundun
        10
    xiaohundun  
       Aug 24, 2023
    @sunzy 2-12 可以用,12-2 用不了但可以确定区间吧?处理一下变成 IN 查询不就行了,伪 sql:
    month in (12,1,2) and day = 1
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   743 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 21:27 · PVG 05:27 · LAX 14:27 · JFK 17:27
    ♥ Do have faith in what you're doing.