【发布时间】:2013-09-03 16:16:34
【问题描述】:
我有一个存储过程,它有参数OrderID (bigint) 和ApprovalDateTime(varchar(25))
SP 仅使用给定OrderID 的以下 XML 更新名为 UserDef 的 XML 列:
<UserDef>
<ApprovalDateTime>01/01/2013 13:30:30</ApprovalDateTime>
</UserDef>
我的问题是,在将这样的日期时间值存储在 XML 列中时,哪种格式最好?
- ISO 8601 XML 格式,如
2002-05-30T09:00:00 - 类似
01/01/2013 13:30:30或 的字符串
-
20130101 13:30:30等不分隔格式 - 或任何其他格式
你会推荐哪一个?
此日期将被提取到另一个存储过程中,以显示在 SSRS 报告的列中。
【问题讨论】:
-
你把 XML 删掉并使用日期时间怎么样?
-
为什么不将实际的
DateTime值存储在实际的DateTime列中?您可以随时添加 XML 绒毛,而不必担心数据库中的格式。数据库应该存储data;客户端是唯一应该知道或关心格式化的层。 -
为什么不对报告使用演示格式?我建议您将 ApprovalDateTime 参数设置为日期时间而不是 varchar。
-
@AaronBertrand:我同意这一点,但由于涉及复制、镜像、BizTalk 等复杂性,添加列或更改列类型不是一种选择。这是数百个共享同一张表的客户中的一个客户的要求。这就是为什么我们在此表中使用现有的“包罗万象”列 UserDef,而不是添加一个名为 ApprovalDateTime 的新列。
标签: sql tsql sql-server-2005 sqlxml sqldatetime