【问题标题】:What is the culture neutral dateformat for SQL ServerSQL Server 的文化中性日期格式是什么
【发布时间】:2012-01-11 09:12:37
【问题描述】:

自从我开始编程生涯以来,我就有这个问题。 sql server中的日期时间是否真的存在文化中性格式,这样当我将查询字符串从客户端发送到运行具有不同系统日期时间格式的sql server 2008端的数据库服务器时,如果查询包含转换为的日期一个字符串,什么格式不会给我错误。

【问题讨论】:

  • @Soham:是否也需要时区(发送日期)?
  • @shahkalpesh - 这就是我想要避免的。

标签: sql sql-server-2008 datetime-format


【解决方案1】:

我推荐阅读 Tibor Karaszi 的 The ultimate guide to the datetime datatypes

如果您以非分隔格式或 ISO 8601 格式输入日期/时间,那么您应该可以进行任何配置。

Unseparated = 'yyyymmdd hh:mm:ss'
ISO 8601    = 'yyyy-mm-ddThh:mm:ss'

更新(来自 cmets):

如果您只需要输入日期(没有时间部分),那么您必须使用'YYYYMMDD' 格式,因为'YYYY-MM-DD' 将不起作用。有关示例,请参阅链接文章。

【讨论】:

  • 对于 SQL Server 和 DATETIME 类型,您需要使用 YYYYMMDD没有破折号!,如果您只需要 DATE - 没有时间),或者您需要的格式提到 (yyyy-mm-ddThh:mm:ss) - 两者都有效。
  • 是的,我都提到了。我通常更喜欢“无破折号”版本。更简洁。
  • 不是真的 - 如果您只需要日期(没有时间),您没有提到格式。与人们可能会相信的相反,YYYY-MM-DD不会起作用(而YYYYMMDD)起作用....
  • 冒着听起来很愚蠢的风险,如何指定时区?在那种情况下,UTC日期格式不合适吗?
  • SQL Server 中的单一时区感知类型是 datetimeoffset(自 2008 年以来)。详情请见msdn.microsoft.com/en-us/library/bb630289.aspx
【解决方案2】:

您可以考虑以UNIX time 格式存储您的日期/时间。

【讨论】:

    猜你喜欢
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 2018-02-13
    相关资源
    最近更新 更多