【问题标题】:How to change date format of datetime data type in SQL?如何在 SQL 中更改 datetime 数据类型的日期格式?
【发布时间】:2017-01-03 05:43:46
【问题描述】:

我的"03-01-2017 10:24:48" 日期格式在SQL 中存储为"2017-03-01 10:24:48.000",其中我的'dd-mm-yyyy' 格式正在转换为'yyyy-mm-dd' 格式。

如何将列的日期格式更改为我想要的格式?我的表已经包含数据。

【问题讨论】:

  • 这适用于哪个 RDBMS?请添加一个标签以指定您使用的是mysqlpostgresqlsql-serveroracle 还是db2 - 或者完全是其他东西。
  • 在这种情况下,数据库存储数据的方式并不重要。它更多关于日期显示的默认格式。如果您使用任何命令行工具,例如在 Oracle 的情况下使用 sqlplus 或在 MSSQL 的情况下使用 sqlcmd,数据库级别的一些参数决定了 DATETIME 的默认显示格式。如果您使用任何 GUI 工具,如 TOAD 或 sqldeveloper,那么这些工具在首选项部分也有默认的日期和时间格式。
  • 我正在使用 Sql Server Mgmt Studio
  • SQL Server 不会以任何特定的字符串格式存储日期或日期时间 - 它们以 二进制格式 存储,显示只是您可以选择的设置.
  • thnx Marc 立即回复,但我的问题是我想将“03”存储为日期的 dd 部分,但它存储为月份(我查询过)

标签: sql sql-server datetime-format alter-table


【解决方案1】:

SQL Server 不会以任何字符串格式存储 DateTime - 它存储为 8 字节数字(二进制)值。

各种设置(语言、日期格式)仅影响DateTime 在 SQL Server Management Studio 中向您显示的方式,或者当您尝试将字符串转换为 DateTime 时如何解析它。

SQL Server 支持多种格式 - 请参阅MSDN Books Online on CAST and CONVERT。这些格式中的大多数取决于您拥有的设置 - 因此,这些设置有时可能有效 - 有时无效。

解决此问题的方法是使用 SQL Server 支持的(稍作调整的)ISO-8601 日期格式 - 这种格式始终有效 - 无论您的SQL Server 语言和日期格式设置。

SQL Server 支持的ISO-8601 format 有两种形式:

  • YYYYMMDD 仅用于日期(无时间部分);请注意:没有破折号!,这非常重要! YYYY-MM-DD独立于 SQL Server 中的日期格式设置,并且适用于所有情况!

或:

  • YYYY-MM-DDTHH:MM:SS 用于日期和时间 - 请注意:此格式破折号(但它们可以省略),以及固定的T作为日期和时间之间的分隔符DATETIME 的一部分。

这对 SQL Server 2000 和更高版本有效。

如果您使用 SQL Server 2008 或更高版本以及 DATE 数据类型(仅限 DATE - 不是 DATETIME!),那么您确实也可以使用 YYYY-MM-DD 格式并且也适用于 SQL Server 中的任何设置。

不要问我为什么整个话题如此棘手和令人困惑——事情就是这样。但是使用YYYYMMDD 格式,您应该可以适应任何版本的 SQL Server 以及 SQL Server 中的任何语言和日期格式设置。

对于 SQL Server 2008 及更高版本,如果您只需要日期部分,建议使用 DATE,如果同时需要日期和时间,则使用 DATETIME2(n)。如果可能,您应该尝试开始逐步淘汰 DATETIME 数据类型

【讨论】:

    【解决方案2】:

    更改格式不会改变数据的存储方式,只会改变数据的显示方式。您可以在 https://msdn.microsoft.com/en-us/library/ms187928.aspx?f=255&MSPPError=-2147217396 找到日期和时间样式。

    【讨论】:

    • 有什么方法可以将日期存储为所需的格式?
    猜你喜欢
    • 2020-04-13
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    • 2012-06-03
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    相关资源
    最近更新 更多