活动的时间有几种形式:
要通过日期来查询和排序,如果只是日期查询还好一些,可以用一个日期->活动的索引表来解决,关键还有其他字段的查询。。。
1
xuelang 2023-08-24 07:50:26 +08:00
将开始日期和结束日期作为单独的字段存储。
``` 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; |
3
kongkx 2023-08-24 10:34:50 +08:00 via iPhone
参考一下 ical data model 。 这几种形式可以配合类型标记,进行 Humanize 展示
|
5
xiaohundun 2023-08-24 11:23:59 +08:00
把 yyyy-mm-dd 拆开都存下来呢
|
6
dode 2023-08-24 11:56:04 +08:00 via Android
日期数据库归一化
|
7
sunzy OP @xiaohundun 跨年如何查询呢?
|
8
xiaohundun 2023-08-24 13:22:24 +08:00
时间拆为年月日之后,用 between and 确定各个部份的范围不就好了么,如果不是范围那就用字面量条件,不挺简单,难道我没理解你的意思?
|
9
sunzy OP @xiaohundun 比如:12/1 - 2/1 这种可以用 between and ?
|
10
xiaohundun 2023-08-24 16:26:02 +08:00
@sunzy 2-12 可以用,12-2 用不了但可以确定区间吧?处理一下变成 IN 查询不就行了,伪 sql:
month in (12,1,2) and day = 1 |