如果我想存储日期和时间,最好将它们存储在单独的日期和时间中还是使用单个日期时间?
我们什么时候应该使用日期和时间而不是单个日期时间?
我想使用日期或时间过滤我的查询。
如果我想存储日期和时间,最好将它们存储在单独的日期和时间中还是使用单个日期时间?
我们什么时候应该使用日期和时间而不是单个日期时间?
我想使用日期或时间过滤我的查询。
当您谈论某个时刻时,无论是通用时刻,还是某人当地日历上的特定日期和时间,您都使用datetime
. 如果你想确保你谈论的是一个确切的时刻,而不管观察者是谁,那么你可以使用datetimeoffset
.
如果您只存储 adate
那么您的意思是没有时间组件的日期,即“此日期的任何时间”。
如果您只存储 atime
那么您的意思是没有日期组件的时间,意思是“这个时间在任何日期”,或“这个时间在由其他方式确定的日期”。
date
将 a和 atime
放在同一行并没有实际目的。只需使用 adatetime
即可。
在 SQL Server 2008 中,您有日期和时间数据类型,因此这不是问题。
如果这是一个不错的选择,它真的取决于您的业务以及您将如何查询数据。
例如,如果您想知道任何一天下午 1 点到 2 点之间的所有订单,使用分隔Date
列Time
会更快
如果您有意不关心时间,则将此数据存储为日期数据类型会更有效。想想客户生日专栏,我能想到的情况不会太多。如果碰巧附加了一个时间(通常是一个错误),则需要通过 convert 语句将其删除以进行比较。如果您不需要这些值(3 个字节与 8 个字节相比),它也会消耗额外的空间。
我认为这类似于拥有一个 id 作为 bigint 而不是 tinyint 之类的状态代码表(取决于您计划拥有多少状态代码)。
这只是您使用数据的目的,如果您认为很有可能需要该数据,则使用日期时间,否则使用日期。
把日期和时间分开没什么好说的,
最好将日期和时间保存在同一列中,
在这里,他们讨论了相同的问题,请检查: 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