何时使用单独的日期和时间而不是单个日期时间

时间:2013-03-19 14:28:40

标签: sql sql-server datetime

如果我想存储日期和时间,最好将它们存储在单独的日期和时间中,还是使用单个日期时间?

我们何时应该使用日期和时间而不是单个日期时间?

我想使用日期或时间过滤我的查询。

5 个答案:

答案 0 :(得分:9)

当您谈论某个时刻,无论是普遍时刻,还是某个人的本地日历上的特定日期和时间,您都会使用datetime。如果你想确定你正在谈论一个确切的时刻,无论观察者是谁,那么你使用datetimeoffset

如果您只存储date,则表示没有时间成分的日期,表示“此日期的任何时间”。

如果您只存储time,那么您的意思是没有日期组件的时间,意味着“此时间在任何日期”,或“此时间在某个其他方式确定的日期”。

同一行中有datetime同样的东西,没有实际的想法。只需使用datetime即可。

答案 1 :(得分:6)

在SQL Server 2008中,您有date and time data types,因此这不是问题。

如果这是一个不错的选择,那实际上取决于您的业务以及您将如何查询数据。

例如,如果您想知道使用分开的DateTime列的任何一天下午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