【问题标题】:Database-safe Date/Time String?数据库安全的日期/时间字符串?
【发布时间】:2010-08-16 16:03:47
【问题描述】:

哪种格式的日期/时间字符串被认为是跨平台、跨数据库、通用安全的?

这个YYYY-MMM-DD HH:MM:SS 在 MySQL、SQLite 2 & 3、MsSQL 和其他常见数据库中使用是否安全?

2010-Jul-12 12:00:00pm 之类的怎么样?

【问题讨论】:

    标签: database datetime format


    【解决方案1】:

    只要有可能,您应该使用真实的日期/时间类型传递和存储日期。如果文化发生变化(也可能在不同的数据库平台上),字符串通常会导致问题。

    如果您的语言或数据库库允许您在数据库查询中使用强类型参数,那将是最安全的方法。如果您对列使用日期/时间类型并使用您的语言的日期/时间类型传递值,则库将确保正确处理您的日期。

    【讨论】:

    • 是对的。安全可靠的方法是使用真实的日期/时间类型,它将时间坐标编码为自一个纪元以来经过的单位数。这就是日期通常存储在计算机上的方式。见en.wikipedia.org/wiki/Epoch_%28reference_date%29
    【解决方案2】:

    您可以选择一个已定义的标准,例如ISO standard for date and times。它非常通用且易于使用和理解,作为一个定义的标准,您可以说“所有日期时间都必须是 ISO 8601”并完成它。无需担心语言环境或文化混乱。

    【讨论】:

    【解决方案3】:

    您并没有真正的“安全”日期时间。这一切都取决于文化, 英国是 DD/MM/YYYY HH:MM:ss 美国是 MM/DD/YYYY HH:MM:ss 或任何不完全确定它是否真的是,但它是不同的。

    我会坚持您的“文化”,并在整个代码中保持一致,以便未来的开发人员可以轻松阅读您的代码,并弄清楚您对数据和时间有什么样的疯狂约定。

    希望这会有所帮助:)

    【讨论】:

      【解决方案4】:

      您应该使用 ISO 标准 - YYYY-MM-DDThh:mm:ss[.mmm]

      或作为替代 YYYYMMDD。

      http://msdn.microsoft.com/en-us/library/ms187819.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-25
        • 2022-08-18
        • 1970-01-01
        • 1970-01-01
        • 2018-02-19
        • 2013-01-28
        • 1970-01-01
        相关资源
        最近更新 更多