我有一个数据库需要存储年份(例如寿命),在某些情况下,这些数据不是非常具体.例如,以及通常的“1960”,我们有’c. 1960年代,“1960年左右”,1960年代在1960年,以及’nd’,没有日期,这是截然不同的空白,直到现在.
什么是最好的方式存储这些?
我正在考虑将年份存储为字符串,并将其添加到数十年,并将“c”保存为大约,“nd”为无日期,但这感觉是错误的.另外,按时间顺序排序,我需要在c之前插入20世纪60年代的物品. 1960年物品,而1960年物品.
我该如何正确地做到这一点?
一些示例日期范围:
1957年
C. 1957年
C. 1957年至1965年
C. 1957 – 1960年代
C. 1957 – 现在
C. 1957年
谢谢你的帮助!
解决方法
您可以插入范围的最早和最新的日期.
喜欢,确切的日期将是
Jan 1,1960 Jan 1,1960
,C. 1960年将是
Jan 1,1960 Dec 31,1960
20世纪60年代将是
Jan 1,1969
等等
那么你可以按照第一个日期和过期日期进行订购:
SELECT * FROM mytable ORDER BY start_date,DATEDIFF(end_date,start_date) DESC
或者,您可以存储预期值和偏差,而不是开始和结束日期.