2017-07-28 52 views
0

其中存储日期和时间将为这个数据段最快的搜索,如果我打算为每个单独的搜索方式的一种方式?我一直保存在日期时间类型,但也许它会更务实用于此目的的单独的列(例如,日期和时间,数据库类型)来存储?在日期查询单独 -存储日期和时间在轨道上的PostgreSQL红宝石

+0

不直接解决您的问题,但[this](https://stackoverflow.com/a/15350965/6611487)看起来很好 –

回答

0

我没有运行任何基准,但我只看到保存为不同的列,如果你正在做大量的规划需要 - 我的意思是巨大的。

timestamp (with time zone) 8 bytes both date and time, with time zone 
date      4 bytes date (no time of day) 
time (without time zone) 8 bytes time of day (no date) 
time (with time zone)  12 bytes times of day only, with time zone 

所以,如果你分开存放,它如果你把时区的time场至少需要更多+ 4字节,或+8。

如果你要有大量的查询行,你只需要查询Date那么它可能是有意义的,否则我不这么认为(实际上它可能仍然没有意义因为有大量的行,它也会使用更多不必要的空间,可能会抵消任何感知的优势)。

我用较Datesinteger场(向上“直到几个月 - 例如,201704为指数),而是因为记录是体现出独特的月度记录,它是有道理的,也没有日期的格式只反映年+月,否则PG是已经非常适合处理日期时间戳情况。

+0

Rails中的datetime和timestamp迁移类型都映射到PostgreSQL的带有时区的TIMESTAMP数据类型,对吗? – Anna

+0

我不这么认为,我认为你需要照顾保存正确。这可以帮助你计算出来:http://rpanachi.com/2016/07/04/ruby-is-time-to-talk-about-timezones –