商店的最佳方式仅限日期时间字段?

时间:2008-09-17 04:22:01

标签: database tsql

方案:  存储过程从代码接收DateTime,比如说DateTime.Now值,作为datetime参数。  存储过程只需要在行上存储日期时间的日期部分,但保留所有与日期相关的算术,例如,按时间间隔进行搜索并根据日期进行报告。

我知道有几种方法,但考虑到性能和浪费的空间有什么好处?

5 个答案:

答案 0 :(得分:4)

业务逻辑应该在proc之外处理。 procs作业应该是保存传递给它的数据。如果要求只存储日期而不是时间,那么BL / DL应传入DateTime.Now **。日期**(或等价...基本上是DateTime对象的Date部分)。

如果由于某种原因无法控制代码,则总是转换(varchar(10),@ YOURDATETIME,101)

答案 1 :(得分:0)

将日期与时间=午夜存储

编辑:我假设是MS SQL Server

答案 2 :(得分:0)

基本上,您只会存储DateTime对象的Date部分。这意味着无论您希望如何处理查询数据,返回的日期将始终设置为00:00:00。

在此方案中,与时间相关的函数无用(即使您的原始DateTime对象使用它们),因为您的数据库会删除此信息。

与数据库返回的每个日期相比,日期相关的算术仍然适用,但您必须假设午夜时间。

答案 3 :(得分:0)

SQL Server 2008具有仅存储时间的仅日期类型(DATE)。考虑升级。

http://www.sqlteam.com/article/using-the-date-data-type-in-sql-server-2008

答案 4 :(得分:0)

如果您正在使用Oracle,则在存储过程中使用日期时间的TRUNC函数。这将只返回日期部分。