将非gregorian日期时间存储在数据库中以提高性能

时间:2015-04-12 16:43:18

标签: sql-server database postgresql datetime

我想在我的数据库(datetimepostgresql)中存储非gregorian sql server值 我有两种方法可以做到这一点。

1-在数据库中存储标准datetime,然后将其转换为我的应用程序中的日期系统。

2-将datetime作为varchar存储在两个不同的字段(日期字段和时间字段)中,作为日期系统中的YYYY-MM-DDHH:MM:SS格式

哪种方式更适合提高性能,因为表中可能存在数千或数百万行,有时我需要订购行。

1 个答案:

答案 0 :(得分:1)

将日期存储为字符串通常在存储和处理方面都非常低效。在Postgres中,您可以定义自己的类型,并重载现有的日期函数和运算符,但这可能需要做很多工作(除非您发现有人已经这样做了)。

快速搜索this old mailing list thread,其中一个建议是围绕现有日期类型构建输入和输出函数。这可以让你使用一些现有的功能(例如,我猜测'1天'和'1年'之间的间隔具有相同的含义;如果没有,请原谅我的无知。)

另一种选择是使用整数或浮点数进行存储,例如: Unix时间戳是固定时间以来的秒数,因此没有关于日历的内置假设。然而,与字符串表示不同,它可以被有效地存储和索引,并且具有定义的有用操作,例如排序和添加。在内部,所有日期都将使用此方法的某些变体进行存储;自定义类型可以更方便地隐藏这些细节。