【问题标题】:Date conversion issue.: yyyy/MM/dd to dd/MM/yyyy日期转换问题。:yyyy/MM/dd 到 dd/MM/yyyy
【发布时间】:2015-04-28 19:48:18
【问题描述】:

我有一个日期列,其中日期格式为

2010-04-14

在 SQL Server 中。有没有办法将日期格式检索为

14/04/2010

在选择语句中?

【问题讨论】:

  • 您的日期列没有任何与之关联的字符串格式。 SQL Server 将日期存储为数值 - 您看到的只是日期的字符串表示。因此,要改变这一点,只需使用不同的格式来表示该日期。
  • 使用CONVERT 将日期转换为您选择的字符串格式 - SQL Server 支持的所有日期格式中的here's the complete list - 任您选择!对于您的情况,请使用 SELECT CONVERT(VARCHAR(20), GETDATE(), 103)

标签: sql sql-server date


【解决方案1】:

试试这个:

SELECT CONVERT(VARCHAR(10), GETDATE(), 103) AS [DD/MM/YYYY]

Source Link

附录 1:

如我的评论中所述,您需要将您的字段转换为DATETIME 类型,然后才能使用上述方法。此示例应该适用于您的 SQL Server:

SELECT CONVERT(VARCHAR(10), CAST('2010-04-14' AS DATETIME), 103) AS [DD/MM/YYYY]

如果你得到这个异常:

消息 242,第 16 级,状态 3,第 1 行 将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。

然后您需要将日期字段更改为YYYY-MM-DD 格式,例如:2010-14-04

在选择语句之前添加以下行:

SET DATEFORMAT MDY -- Input dates are in the MM/DD/YYYY format, change to DMY to handle UK dates

例子:

SET DATEFORMAT MDY;

SELECT CONVERT(VARCHAR(10), CAST('2010-04-14' AS DATETIME), 103) AS [DD/MM/YYYY]

【讨论】:

  • 我仍然得到日期格式为 2010-04-14。我需要它作为 14/04/2010
  • 正如你所说,我遇到了异常。你能告诉我如何将日期字段更改为 YYYY-MM-DD 格式。thanx
  • @StuartBlackler 示例与 YYYY-MM-DD 不同。
【解决方案2】:

解决问题的另一种方法:

select substring(columnName, 9, 2) + '/' + substring(columnName, 6, 2)  + '/' + substring(columnName, 1, 4)

【讨论】:

  • 或者只使用SET DATEFORMAT MDY 那么就没有字符串操作
【解决方案3】:

如果您在 SqlServer 的外部显示该日期,更好的方法是检索该日期 as date 并将其转换为您之前想要的字符串表示形式显示它。

如何做到这一点取决于你的情况。

【讨论】:

    【解决方案4】:
    select replace(datetime,'-','/')
    

    【讨论】:

    • 这并不能解决问题,即同时更改分隔符和日期组件的顺序。
    猜你喜欢
    • 2023-03-27
    • 2023-03-26
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多