【发布时间】:2010-08-16 16:03:47
【问题描述】:
哪种格式的日期/时间字符串被认为是跨平台、跨数据库、通用安全的?
这个YYYY-MMM-DD HH:MM:SS 在 MySQL、SQLite 2 & 3、MsSQL 和其他常见数据库中使用是否安全?
2010-Jul-12 12:00:00pm 之类的怎么样?
【问题讨论】:
哪种格式的日期/时间字符串被认为是跨平台、跨数据库、通用安全的?
这个YYYY-MMM-DD HH:MM:SS 在 MySQL、SQLite 2 & 3、MsSQL 和其他常见数据库中使用是否安全?
2010-Jul-12 12:00:00pm 之类的怎么样?
【问题讨论】:
只要有可能,您应该使用真实的日期/时间类型传递和存储日期。如果文化发生变化(也可能在不同的数据库平台上),字符串通常会导致问题。
如果您的语言或数据库库允许您在数据库查询中使用强类型参数,那将是最安全的方法。如果您对列使用日期/时间类型并使用您的语言的日期/时间类型传递值,则库将确保正确处理您的日期。
【讨论】:
您可以选择一个已定义的标准,例如ISO standard for date and times。它非常通用且易于使用和理解,作为一个定义的标准,您可以说“所有日期时间都必须是 ISO 8601”并完成它。无需担心语言环境或文化混乱。
【讨论】:
您并没有真正的“安全”日期时间。这一切都取决于文化, 英国是 DD/MM/YYYY HH:MM:ss 美国是 MM/DD/YYYY HH:MM:ss 或任何不完全确定它是否真的是,但它是不同的。
我会坚持您的“文化”,并在整个代码中保持一致,以便未来的开发人员可以轻松阅读您的代码,并弄清楚您对数据和时间有什么样的疯狂约定。
希望这会有所帮助:)
【讨论】:
您应该使用 ISO 标准 - YYYY-MM-DDThh:mm:ss[.mmm]
或作为替代 YYYYMMDD。
【讨论】: