日期转换问题:将yyyy/MM/dd转换为dd/MM/yyyy。

4

我可以为你进行翻译。以下是需要翻译的内容:

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

2010-04-14

在SQL Server中,有没有可能检索日期格式为的任何可能方法
14/04/2010

在 SELECT 语句中?

3
你的日期列中没有与之关联的字符串格式。SQL Server将日期存储为数字值——你看到的只是日期的字符串表示形式。因此,要更改它,只需使用不同的格式来表示该日期。 - marc_s
2
使用 CONVERT 将日期转换为您选择的字符串格式 - 这里是完整列表 SQL Server 支持的所有日期格式 - 挑选一个吧!对于您的情况,请使用 SELECT CONVERT(VARCHAR(20), GETDATE(), 103) - marc_s
4个回答

8

试试这个:

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

源链接

补充1:

如我在评论中所述,您需要将字段转换为 DATETIME 类型,然后上述方法才能生效。以下示例在 SQL Server 上应该可以使用:

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

如果您遇到此异常:

Msg 242, Level 16, State 3, Line 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。 - chamara
就像你说的,我得到了异常。请问你能告诉我如何将日期字段更改为YYYY-MM-DD格式吗?谢谢。 - chamara
@StuartBlackler 的示例与 YYYY-MM-DD 不同。 - aF.

1

解决问题的另一种方法:

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

1
或者直接使用 SET DATEFORMAT MDY,这样就不需要进行字符串操作了。 - Stuart Blackler

0
如果您在SqlServer之外展示该日期,则更好的方法是将该日期作为日期检索并在显示之前将其转换为要显示的字符串表示形式。
如何执行取决于您的具体情况。

-1
select replace(datetime,'-','/')

这并没有解决问题,问题是要更改日期组件的分隔符和顺序。 - elixenide

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接