将dd/mm/yy nvarchar(255)转换为日期格式dd/mm/yyyy的SQL语句
我正在努力使用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); 有关更多详细信息,请参
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抱歉。