2008-09-17 82 views
3

场景: 存储过程从代码接收DateTime,比如DateTime.Now值作为日期时间参数。 存储过程只需要在行上存储日期时间的日期部分,但要保留所有日期相关的算术运算,以便按时间间隔执行搜索并根据日期执行报告。在日期时间字段上存储唯一日期的最佳方法?

我知道有几种方法,但考虑到性能和浪费的空间会更好吗?

+0

请让我们知道您正在使用哪个数据库? – Brettski 2008-09-17 04:24:08

+0

对不起,它是SQL Server 2005,标签是tsql,认为这已经足够了> _ < – 2008-09-17 04:31:48

回答

4

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

如果你无法控制某种原因的代码,总是有转换(VARCHAR(10),@YOURDATETIME,101)

0

店的日期与时间=午夜

编辑:我是假设MS SQL服务器

+0

它就是它的标签tsql。感谢你的回答。 – 2008-09-17 04:30:03

0

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

在这种情况下,即使您的原始DateTime对象使用它们,与时间相关的函数也没用,因为数据库会丢失此信息。

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

0

如果你在甲骨文的工作,你的存储过程中使用的日期时间TRUNC函数。这将仅返回日期部分。

相关问题