Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 日期转换问题:yyyy/MM/dd至dd/MM/yyyy_Sql_Sql Server_Date - Fatal编程技术网

Sql 日期转换问题:yyyy/MM/dd至dd/MM/yyyy

Sql 日期转换问题:yyyy/MM/dd至dd/MM/yyyy,sql,sql-server,date,Sql,Sql Server,Date,我有一个日期列,其中日期格式为 2010-04-14 在SQL Server中。是否有任何可能的方法检索日期格式 14/04/2010 在select语句中?尝试以下操作: SELECT CONVERT(VARCHAR(10), GETDATE(), 103) AS [DD/MM/YYYY] 增编1: 如我在评论中所述,您需要先将字段转换为DATETIME类型,然后才能执行上述操作。此示例应适用于您的SQL Server: SELECT CONVERT(VARCHAR(10), CAST

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

2010-04-14
在SQL Server中。是否有任何可能的方法检索日期格式

14/04/2010
在select语句中?

尝试以下操作:

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]
如果出现此异常:

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

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

在select语句之前添加以下行:

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]

解决问题的另一种方法:

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

如果在SqlServer之外显示该日期,更好的方法是将该日期检索为日期,并在显示之前将其转换为所需的字符串表示形式


如何做取决于您的情况。

我仍然得到日期格式为2010-04-14。我需要它为2010年4月14日,正如您所说,我得到了例外。请告诉我如何将日期字段更改为YYYY-MM-DD格式。thanx@StuartBlackler示例不同于
YYYY-MM-DD
。日期列没有任何字符串与之关联的格式。SQL Server将日期存储为数值-您看到的只是日期的字符串表示形式。因此,要改变这一点,只需使用不同的格式表示该日期。使用
CONVERT
将该日期转换为您选择的字符串格式(SQL Server支持的所有日期格式中的一种),您可以选择!对于您的情况,使用
SELECT CONVERT(VARCHAR(20),GETDATE(),103)
或只使用
SET DATEFORMAT MDY
即可执行无字符串操作这并不能解决问题,即更改分隔符和日期组件的顺序。
select replace(datetime,'-','/')