gpt4 book ai didi

sql - 年和月使用什么类型的数据类型?

转载 作者:行者123 更新时间:2023-12-02 18:44:23 26 4
gpt4 key购买 nike

我必须在表格中存储年份和月份,以及下个月的另外两列主题和主题详细信息我应该使用什么数据类型

我应该使用smalldatetime并通过创建像09/01/2011这样的日期来存储它们吗?

我应该使用两列varcharint来存储单独的年份和 2011 09 等月份?

我应该使用一列varchar来存储它们并连接它们 像201109

已编辑

我还想补充一点,我也必须在搜索中使用这些列,因此我必须在 where 子句中使用它们,所以在回答时这件事也很重要

最佳答案

通常,我建议使用日期日期类型,无论您有什么限制,因为它允许您进行日期操作和比较。然后,您可以使用触发器将日期限制为该月的第一天。您需要触发器来确保您无法为单个月/年组合获取两行。

Actually, as Damian_The_Unbeliever rightly points out in a comment, you don't need triggers if your intent is to only allow users to attempt insertion of dates where the day of the month is 1. In that case, constraints will probably be enough. It's only the case where you want to allow users to attempt to insert any date but actually force it to become the first day of that month, that triggers would be required.

但是,在这种情况下,根据您的用例,我对两列年/月设置非常满意。

通过使用两个整数类型列,您无需担心触发器,并且根据您的列规范,您似乎不需要对表内容进行大量处理。

如果您预见到需要处理给定年份(与月份无关)的数据,我不会将它们存储为单个整数类型列。将年份分开将允许使用不同的索引,这可能比获取一系列 YYYYMM 值更快。

认真地说,选择您认为最容易编码的一个(并且满足功能要求)。然后,如果并且您发现性能问题,请考虑架构重组。数据库不是一劳永逸的东西,您应该不断监视它们是否存在问题,并在必要时进行更改。

关于sql - 年和月使用什么类型的数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7802879/

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