gpt4 book ai didi

mysql - 如何在不使用日期字段的情况下选择两个日期之间的所有记录?

转载 作者:可可西里 更新时间:2023-11-01 08:08:05 26 4
gpt4 key购买 nike

我有一个 MySQL 数据库,我需要能够存储早于 1970 年的日期,因此我需要一种自定义方式来存储日期。就我而言,我需要能够将日期存储到现在,并尽可能追溯到历史。显然,历史上较早的事件需要的准确性较低——日、月、甚至年变得不那么重要,因为我们没有这些历史信息。涉及日期的主要查询将是选择两个给定日期之间的记录。

我曾想过使用这种格式:

Year - int(6) | Month - tinyint(2) | day - tinyint (2) | time - time | AD tinyint (1) | mya - int (11)
但是当涉及到实际使用这种格式的数据时,就变得困难了。例如,如果我想获取两个日期之间的所有记录,它就像(伪代码而不是 SQL):

get all where
year between minYear and maxYear<br/>
if year == minYear, month >= minMonth<br/>
if year == maxYear, month <= maxMonth<br/>
if month == minMonth, day >= minDay<br/>
if month == maxMonth, day <= maxDay<br/>
if day == minDay, time >= minTime<br/>
if day == maxDay, time <= maxTime

之类的,这似乎是一种正确的痛苦。我可以存储 0 AD 之前/之后的秒数,但这会占用太多数据! 2011 = 自公元 0 年以来 64 亿秒。有人对这个问题有什么想法吗?

最佳答案

我会存储自给定日期以来的天数。有多种日期可以用作零日。这些通常称为儒略日,请参阅 wikipaedia

当您存储从 0 AD 开始的日期时,我会查看按时间顺序排列的儒略日 (CJD),因此您的所有值都是正数。

作为副作用,这意味着当您转换到或从您了解更多的日期时,您只需要考虑处理不同的日历(例如,当它们更改为公历时以及年初更改或使用伊斯兰历时)有关实际日期的详细信息,

如果对日期感兴趣,请不要为秒而烦恼,因为这些会使不必要的事情变得复杂,并且还意味着您必须处理更大的数据(即比 long 长)和时区等......

关于mysql - 如何在不使用日期字段的情况下选择两个日期之间的所有记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4604622/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com