在SQL数据库中存储没有一年的日期的最佳方法是什么?

Mik*_*ike 11 .net sql sql-server

我正在构建一个应该存储在数据库中的每日报价的应用程序.每个报价分配一年中的一天,包括2月29日的一天.由于引用只关心那一天不是一年,我还应该使用smalldatetime类型吗?请让我知道你的意见,谢谢!!

Jam*_*mes 17

我最近遇到了这个问题,我的初始设计确实存储了日期,而我却忽略了这一年.然而,它只是感觉不对.我决定只删除它并改为使用单独的Day/ Month列.它感觉更清洁,更具可读性.

更新

自从我写完这个答案以来,很长一段时间,事后我举起手来说这些评论被天真地忽略了.通过将日/月存储为单独的字段,存在存储无效数据的可能性,而如果将它们存储为完整数据DateTime,则实际上可以免费获得该验证.

根据您的验证策略,这可能不是一个问题,但是,如果您依赖数据库验证,那么我建议您将其存储为DATE并简单地提取相关信息或使用触发器在插入之前运行一些验证.


Tod*_*d R 7

另一种选择(我认为其他人没有提供)将把月份和日期存储为单独的整数.因此,要查找今天的条目,您可以:

select quote from quoteTable where month = 4 and day = 20;
Run Code Online (Sandbox Code Playgroud)

这将允许您在不使用日期(并忽略年份)的情况下获取特定日期的消息.

只是一个想法.