Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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
将dd/mm/yy nvarchar(255)转换为日期格式dd/mm/yyyy的SQL语句_Sql_Sql Server_Date Conversion - Fatal编程技术网

将dd/mm/yy nvarchar(255)转换为日期格式dd/mm/yyyy的SQL语句

将dd/mm/yy nvarchar(255)转换为日期格式dd/mm/yyyy的SQL语句,sql,sql-server,date-conversion,Sql,Sql Server,Date Conversion,我正在努力使用SQL语句将格式为dd/mm/yy且类型为nvarchar(255)的导入数据转换为date类型为'dd/mm/yyyy'的格式 样本数据如下: 日期: 迄今为止的格式: '23/10/2017' '24/10/2017' '25/10/2017' '26/10/2017' '27/10/2017' 我正在使用SQL Server 2008 R2请尝试使用CONVERT SELECT convert(datetime, datecolumn, 103); 有关更多详细信息,请参

我正在努力使用SQL语句将格式为
dd/mm/yy
且类型为
nvarchar(255)
的导入数据转换为
date
类型为'dd/mm/yyyy'的格式

样本数据如下:

日期:

迄今为止的格式:

'23/10/2017'
'24/10/2017'
'25/10/2017'
'26/10/2017'
'27/10/2017'
我正在使用SQL Server 2008 R2

请尝试使用CONVERT

SELECT convert(datetime, datecolumn, 103);
有关更多详细信息,请参阅这些链接

希望这有帮助。

尝试使用CONVERT

SELECT convert(datetime, datecolumn, 103);
有关更多详细信息,请参阅这些链接

希望这有帮助。

给你:

WITH CTE AS (
    SELECT '23/10/17' AS MyDate
    UNION
    SELECT '24/10/17'
    UNION
    SELECT '25/10/17'
    UNION
    SELECT '26/10/17'
    UNION
    SELECT '27/10/17'
    )
    SELECT * , 
          CONVERT(DATE, MyDate,3) AS MyDate, 
          CONVERT(VARCHAR, CONVERT(DATE, MyDate,3), 103) AS ExactFormat
    FROM CTE;
结果:

+----------+---------------------+-------------+
|  MyDate  |       MyDate        | ExactFormat |
+----------+---------------------+-------------+
| 23/10/17 | 23.10.2017 00:00:00 | 23/10/2017  |
| 24/10/17 | 24.10.2017 00:00:00 | 24/10/2017  |
| 25/10/17 | 25.10.2017 00:00:00 | 25/10/2017  |
| 26/10/17 | 26.10.2017 00:00:00 | 26/10/2017  |
| 27/10/17 | 27.10.2017 00:00:00 | 27/10/2017  |
+----------+---------------------+-------------+

给你:

WITH CTE AS (
    SELECT '23/10/17' AS MyDate
    UNION
    SELECT '24/10/17'
    UNION
    SELECT '25/10/17'
    UNION
    SELECT '26/10/17'
    UNION
    SELECT '27/10/17'
    )
    SELECT * , 
          CONVERT(DATE, MyDate,3) AS MyDate, 
          CONVERT(VARCHAR, CONVERT(DATE, MyDate,3), 103) AS ExactFormat
    FROM CTE;
结果:

+----------+---------------------+-------------+
|  MyDate  |       MyDate        | ExactFormat |
+----------+---------------------+-------------+
| 23/10/17 | 23.10.2017 00:00:00 | 23/10/2017  |
| 24/10/17 | 24.10.2017 00:00:00 | 24/10/2017  |
| 25/10/17 | 25.10.2017 00:00:00 | 25/10/2017  |
| 26/10/17 | 26.10.2017 00:00:00 | 26/10/2017  |
| 27/10/17 | 27.10.2017 00:00:00 | 27/10/2017  |
+----------+---------------------+-------------+

请更具体地回答您的问题,您是否希望日期格式为dd/mm/yy?对于
dd/mm/yyyy
转换(datetime,imported\u date\u col,3),请使用
转换(datetime,imported\u date\u col,103)
对于
dd/mm/yy
基本上,您的第一个问题是如何确定2位数年份的世纪。千年虫问题。如果日期是2016年11月26日,那是1916年还是2016年???一旦您确定要执行一些字符串操作以将yy转换为yyyy,那么您可以根据需要进行转换/转换,但如果没有该规则,我们编写的任何内容都无法更正。请更具体地回答您的问题,您是否希望使用具有dd/mm/yy的日期格式?使用
convert(datetime,imported\u date\u col,103)
对于
dd/mm/yyyy
转换(datetime,imported_date_col,3)
对于
dd/mm/yyyy
基本上您的第一个问题是如何确定2位数年份所处的世纪。千年虫问题。如果日期是2016年11月26日,那是1916年还是2016年???一旦您确定了要执行某些字符串操作以将yy转换为yyyy,那么您就可以根据需要进行强制转换/转换,但是如果没有该规则,我们编写的任何内容都将无效correct@Matt:对于两位数年份(坏主意!),您可以使用样式“3”而不是“103”-见docs@marc_sDUHH但OP询问如何将2位数的年份转换为3位数的
SQL语句,以将dd/mm/yy nvarchar(255)转换为日期格式dd/mm/yyy
,而这个答案不起作用that@Matt:我认为“三位数”年份只是一个输入错误,应该是四位数字……@marc_s,我也是,这就是我最初评论4的原因……很明显,我的原始形式的评论一定格式不正确。希望我的另一条评论和这条评论是这样的:OP在问如何将字符串中的2位数年份转换为日期时间。这个答案不会让访问者不使用这个解决方案,并提示海报删除答案或更改为正确。谢谢你的回答我编辑了打字错误,这是yyyy道歉。@马特:对于两位数的年份(坏主意!),你可以使用样式“3”而不是“103”-见docs@marc_sDUHH但OP询问如何将2位数的年份转换为3位数的
SQL语句,以将dd/mm/yy nvarchar(255)转换为日期格式dd/mm/yyy
,而这个答案不起作用that@Matt:我认为“三位数”年份只是一个输入错误,应该是四位数字……@marc_s,我也是,这就是我最初评论4的原因……很明显,我的原始形式的评论一定格式不正确。希望我的另一条评论和这条评论是这样的:OP在问如何将字符串中的2位数年份转换为日期时间。这个答案不会让访问者不使用这个解决方案,并提示海报删除答案或更改为正确答案。感谢您的回复我编辑了打字错误,这是yyyy抱歉。