0

我有一个存储过程,它有参数OrderID( bigint) 和ApprovalDateTime( varchar(25))

SP 只是更新一个 XML 列,该列UserDef使用以下 XML 为给定的 XML 调用OrderID

<UserDef>
<ApprovalDateTime>01/01/2013 13:30:30</ApprovalDateTime>
</UserDef>

我的问题是,在将这样的日期时间值存储在 XML 列中时,哪种格式最好?

  1. ISO 8601 XML 格式如2002-05-30T09:00:00
  2. 类似01/01/2013 13:30:30或的字符串
  3. 未分隔的格式,例如20130101 13:30:30
  4. 或任何其他格式

你会推荐哪一个?

此日期将在另一个存储过程中提取,以在 SSRS 报告的列中显示。

4

1 回答 1

2

我的第一个建议是修复数据类型。绝对没有理由我可以理解这个单个值应该与所有额外的 XML 绒毛一起存储。将演示内容留给演示层。

鉴于您现在似乎坚持使用它,我会使用 ISO 8601(第一个选项)。为什么?

  1. 使用mm/dd/yyyy(您的选项 2)容易以各种方式产生误解,例如,如果您05/06/2013知道那是 5 月 6 日还是 6 月 5 日,我怎么知道?您的所有观众都会喜欢您选择的相同日期格式吗?你还知道吗?事实上,要查明为什么这是一个问题,我什至不知道你的意思是mm/dd/yyyy还是dd/mm/yyyy.

  2. 未分隔的格式阅读起来稍微麻烦一些,尤其是当日期包含连续字符时,例如20110110. 破折号可以是一个很好的视觉分隔符,只是不要忘记 T:

    SET LANGUAGE FRENCH;
    SELECT CONVERT(DATETIME, '2013-05-06 13:30:30');
    

    结果(6月5日!):

    2013-06-05
    
于 2013-09-03T16:32:59.227 回答