如果我想存储日期和时间,最好将它们存储在单独的日期和时间中,还是使用单个日期时间?
我们何时应该使用日期和时间而不是单个日期时间?
我想使用日期或时间过滤我的查询。
答案 0 :(得分:9)
当您谈论某个时刻,无论是普遍时刻,还是某个人的本地日历上的特定日期和时间,您都会使用datetime
。如果你想确定你正在谈论一个确切的时刻,无论观察者是谁,那么你使用datetimeoffset
。
如果您只存储date
,则表示没有时间成分的日期,表示“此日期的任何时间”。
如果您只存储time
,那么您的意思是没有日期组件的时间,意味着“此时间在任何日期”,或“此时间在某个其他方式确定的日期”。
同一行中有date
和time
同样的东西,没有实际的想法。只需使用datetime
即可。
答案 1 :(得分:6)
在SQL Server 2008中,您有date and time data types,因此这不是问题。
如果这是一个不错的选择,那实际上取决于您的业务以及您将如何查询数据。
例如,如果您想知道使用分开的Date
和Time
列的任何一天下午1点到2点之间的所有订单,那么会更快
答案 2 :(得分:2)
如果您故意不关心时间,将此数据存储为日期数据类型会更有效。想想一个客户生日专栏,我想到的这个时间并不会太多。如果碰巧有时间附加(通常是一个bug),则需要通过convert语句删除它以进行比较。如果您不需要这些值,它还会占用额外的空间(3个字节与8个字节相比)。
我认为它类似于拥有一个状态代码表,其id为bigint而不是tinyint等(取决于您计划拥有多少状态代码)。
这只是你使用数据的问题,如果你认为你很可能需要那些数据,那就使用datetime,否则使用date。
答案 3 :(得分:1)
从技术角度来看,日期总是有时间,时间总是日期。如果在数据库中存储时间,则它具有应用于它的默认日期。如果您只存储一个日期,则该日期将是该日期的午夜(00:00:00)。
在我看来,最好将两者一起存储,因为函数可以适当地应用于单个字段,无论您是否需要在日期或时间进行比较。
答案 4 :(得分:1)
关于分割日期和时间没什么了不起的,
最好在同一列中保存日期和时间,
他们在这里讨论了相同的问题,请查看它:are-there-any-good-reasons-for-keeping-date-and-time-in-separate-columns
您还可以通过查询单独获取日期和时间
SELECT
CONVERT(VARCHAR(10),GETDATE(),111) as DatePart,
convert(varchar(15), getdate(), 108) TimePart