将字符串转换为日期sql server中的格式字符串

时间:2010-12-18 08:06:48

标签: sql sql-server-2008 datetime

如何在SQL Server 2008中将日期字符串DDMMYYYY(例如31012010)的格式转换为DD/MM/YY(例如:31/01/2010)?

4 个答案:

答案 0 :(得分:2)

尝试STUFF

SELECT STUFF(STUFF(your_string_column, 3, 0, '/'), 6, 0, '/')
FROM ...

答案 1 :(得分:1)

SELECT Convert(varchar(10), CAST(MyColumn AS datetime), 103)

答案 2 :(得分:0)

这将从后跟空格的字符串中提取日期。 我花了一段时间才弄明白,所以我想我会分享:

SELECT reference, Convert(date,Left(history,charindex(
    ' ',Left(history,12)) - 1)) as theDate
FROM productinfo
Order BY theDate DESC

答案 3 :(得分:0)

这是一个老问题,但我最终在2018年2月来到这里,所以......

SQL Server 2012 +中考虑Format
- 参考https://docs.microsoft.com/en-us/sql/t-sql/functions/format-transact-sql(B和D)

对于2008及以上:

declare @d char(8)
 -- string manipulation assumes clean data
set @d = '31012010'

SELECT LEFT(@d, 2) +'/'+ SUBSTRING(@d, 3, 2) +'/'+ RIGHT(@d, 4)  As [with slashes]

字符串操作效率低下 - 确保您了解其影响 例如。你永远不会把这个代码放在一个join子句中(可能在报告服务器上没问题)。

个人观点:Mark Byers STUFF(STUFF(@d, 3, 0, '/'), 6, 0, '/'))的答案肯定有效,但我认为如果您的代码中有非DBA,则可维护性较差。 (STUFF ref https://docs.microsoft.com/en-us/sql/t-sql/functions/stuff-transact-sql