Tri*_*cky 12 database database-design types
我有一个数据库,需要存储年份范围(例如寿命),在某些情况下,这些数据库不是非常具体.例如,和通常的'1960'一样,我们有'c.1960年代为"1960年代左右",1960年代为1960年代,以及"nd"代表没有日期,这与迄今为止的NULL明显不同.
什么是存储这些的最佳方式?
我想可能将这一年存储为一个字符串,并附加's'几十年和'c'为大约,'nd'没有约会......但这感觉是错的.此外,按时间顺序排序时,我需要在c之前插入20世纪60年代的项目进行排序.1960年的项目,而1960年之前的项目.
我该怎么做呢?
一些示例日期范围:
1957年
c.1957年
c.1957 - 1965
c.1957 - 1960年代
c.1957年 - 现在
c.1957年 - nd
谢谢你的帮助!
您可以插入该范围的最早和最晚日期.
就像,确切的日期将是
Jan 1, 1960 Jan 1, 1960
Run Code Online (Sandbox Code Playgroud)
, C.1960年将是
Jan 1, 1960 Dec 31, 1960
Run Code Online (Sandbox Code Playgroud)
,20世纪60年代将是
Jan 1, 1960 Dec 31, 1969
Run Code Online (Sandbox Code Playgroud)
等等
然后你可以在第一次约会和约会时订购:
SELECT *
FROM mytable
ORDER BY
start_date, DATEDIFF(end_date, start_date) DESC
Run Code Online (Sandbox Code Playgroud)
或者,您可以存储期望值和偏差,而不是起始日期和结束日期.