【发布时间】:2010-04-13 15:02:38
【问题描述】:
我有一个 MySQL 表,其中有一个“date_added”(日期)字段、“time_added”(时间)字段和“timestamp”(int)字段。
我后来发现无论如何我都可以将时间戳转换为日期或时间,那么这是否意味着我可以摆脱其他日期/时间字段并只保留时间戳?
提前致谢
【问题讨论】:
我有一个 MySQL 表,其中有一个“date_added”(日期)字段、“time_added”(时间)字段和“timestamp”(int)字段。
我后来发现无论如何我都可以将时间戳转换为日期或时间,那么这是否意味着我可以摆脱其他日期/时间字段并只保留时间戳?
提前致谢
【问题讨论】:
在您描述的布局中,我认为没有理由拥有多个字段。您可以使用 DATETIME 列,或者,如果您喜欢 DB 魔术,可以使用 TIMESTAMP 列(不要将其与 unix 时间戳混淆)。可以将表中的第一个 TIMESTAMP 配置为自动更新。
还值得注意的是,某些平台在使用 Unix 时间戳时允许非常窄的日期范围(存储 1970 年之前或 2038 年之后的日期可能会出现问题),而 MySQL 的 DATETIME 类型范围从 1000 年到 9999 年。
【讨论】:
是的!使用查询根据需要进行转换。
【讨论】:
是的,请记住 32 位时间戳将在 20 年后用完值。
【讨论】:
你能摆脱那些领域吗?是的。
你应该摆脱那些领域吗?也许不会。
如果您发现自己专门按日期或时间进行查询,则单独存储和索引它们比执行WHERE DATE(timestamp) = '01-01-2001' 之类的不可索引且效率低下的操作要高效得多。
取决于对该表的查询。
【讨论】: