我想在我的数据库(datetime
或postgresql
)中存储非gregorian sql server
值
我有两种方法可以做到这一点。
1-在数据库中存储标准datetime
,然后将其转换为我的应用程序中的日期系统。
2-将datetime
作为varchar存储在两个不同的字段(日期字段和时间字段)中,作为日期系统中的YYYY-MM-DD
和HH:MM:SS
格式
哪种方式更适合提高性能,因为表中可能存在数千或数百万行,有时我需要订购行。
答案 0 :(得分:1)
将日期存储为字符串通常在存储和处理方面都非常低效。在Postgres中,您可以定义自己的类型,并重载现有的日期函数和运算符,但这可能需要做很多工作(除非您发现有人已经这样做了)。
快速搜索this old mailing list thread,其中一个建议是围绕现有日期类型构建输入和输出函数。这可以让你使用一些现有的功能(例如,我猜测'1天'和'1年'之间的间隔具有相同的含义;如果没有,请原谅我的无知。)
另一种选择是使用整数或浮点数进行存储,例如: Unix时间戳是固定时间以来的秒数,因此没有关于日历的内置假设。然而,与字符串表示不同,它可以被有效地存储和索引,并且具有定义的有用操作,例如排序和添加。在内部,所有日期都将使用此方法的某些变体进行存储;自定义类型可以更方便地隐藏这些细节。