Преобразовать строку в дату Форматировать строку на сервере SQL - PullRequest
1 голос
/ 18 декабря 2010

Как преобразовать формат строки даты DDMMYYYY (например: 31012010) в DD/MM/YY (например: 31/01/2010) в SQL Server 2008?

Ответы [ 4 ]

2 голосов
/ 18 декабря 2010

Попробуйте STUFF :

SELECT STUFF(STUFF(your_string_column, 3, 0, '/'), 6, 0, '/')
FROM ...
1 голос
/ 18 декабря 2010
SELECT Convert(varchar(10), CAST(MyColumn AS datetime), 103)
0 голосов
/ 12 февраля 2018

Это старый вопрос, но я оказался здесь в феврале 2018 года, так что ...

В SQL Server 2012 + рассмотрим Format
- ref 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]

Манипулирование строками может быть неэффективным - убедитесь, что вы понимаете влияние.
Например. вы никогда бы не поместили этот код в предложение соединения ( может быть нормально на сервере отчетов).

Личное мнение: ответ от Марка Байерса STUFF(STUFF(@d, 3, 0, '/'), 6, 0, '/')), конечно, работает, но я думаю, что его легче поддерживать, если в вашем коде работают не администраторы баз данных. (STUFF ref https://docs.microsoft.com/en-us/sql/t-sql/functions/stuff-transact-sql)

0 голосов
/ 25 марта 2013

Это извлекает дату из строки, за которой следует пробел. Это заняло у меня некоторое время, чтобы понять, поэтому я решил поделиться:

SELECT reference, Convert(date,Left(history,charindex(
    ' ',Left(history,12)) - 1)) as theDate
FROM productinfo
Order BY theDate DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...