我需要在数据库中插入一个年份(例如:1988、1990等)。当我使用日期或时间日期数据类型时,会出现错误。我应该使用哪种数据类型?
我需要在数据库中插入一个年份(例如:1988、1990等)。当我使用日期或时间日期数据类型时,会出现错误。我应该使用哪种数据类型?
正常的4字节整数太大了,浪费空间!
你没有说明你使用的是哪种数据库,所以我无法推荐具体的数据类型。虽然许多人都建议使用“integer”类型,但大多数数据库将整数存储为4个字节,这远远超出了您的需求。您应该使用两个字节的整数(在SQL Server中为smallint),这将节省空间。
如果你需要在数据库中存储一年的时间,你可以使用 Integer 数据类型(如果你只想存储年份)或者 DateTime 数据类型(这将涉及到存储一个日期,通常是 1990 年 1 月 1 日 00:00:00 的格式)。
嘿,你可以在MySQL中使用year()数据类型,它有两位数和四位数格式可用。
注意:四位数格式允许的值范围为1901至2155年。 两位数格式允许的值范围为70至69,表示1970年至2069年之间的年份。
如果你只需要存储年份,可以使用整数。如果在查询此列时需要进行基于日期的计算,也可以使用datetime。
我认为使用整数或任何整数子类型都不是一个好选择。早晚你会需要进行其他日期相关的操作。另外在2019年,让我们不要太担心空间。看看那些省下来的2个字节在2000年花费了我们多少。
我建议使用年份+0101转换成真实日期的方式。同样,如果需要存储某年某月,可以将年份+月份+01作为真实日期存储。
如果你这样做了,以后就能够正确地进行“日期方面”的操作了。
存储可能只是问题的一部分。这个值将如何在查询中使用?
它将与另一个日期时间数据类型进行比较,还是所有相关行也将具有数字值?
如果需求发生变化,你会如何处理?你能多快地响应将年份替换为更小的时间段的请求吗?即现在他们想按季度拆分它?
通过查找表来轻松地在日期时间查询中使用数值类型,包含诸如开始和结束日期(1/1/X至12/31/x)等内容。