2015-06-22 2 views
1

Нужна помощь в преобразовании DateTime в VARCHAR, как в данном форматеновообращенный даты и времени на VARCHAR (50)

2015-01-04 16:07:37.000" 

в

01/04/2015 16:07PM 

Вот что пробовал:

convert(varchar(20),datetime,103)+ ' '+convert(varchar(20),datetime,108)+ ' ' +right(convert(varchar(30),datetime,109),2) 
+0

Что вы пробовали? –

+0

Я пытался «конвертировать (varchar (20), datetime, 103) + '' + convert (varchar (20), datetime, 108) + '' + right (convert (varchar (30), datetime, 109), 2) « – user3244104

+0

Какая СУБД вы используете? – Jens

ответ

1

это будет работа в sqlserverSQLFiddle относительно этого демо

SELECT convert(varchar, getdate(), 103) 
+' '+ CONVERT(varchar(15),CAST(getdate() AS TIME),100) 
+0

не получается желаемый вывод из этого – user3244104

+0

@ user3244104 проверить обновленный ответ –

+1

@ user3244104 он отображает точный результат, и вам нужно изменить в соответствии с переменной ur от getdate() до urs datetime ... –

1

Это приведет к выводу вашей строки из текущего дня и времени в формате 06/22/15 1:46:07 PM.

SELECT CONVERT(VARCHAR(50), GETDATE(), 22) 

Попробуйте использовать формат

SELECT FORMAT(GETDATE(), 'g') 

который получит 6/22/2015 1:57 PM.

+1

показывает секунды также в op .... Я думаю, что не нужны секунды –

0

Вы всегда можете построить его самостоятельно, используя DATEPART ...

SELECT 
    RIGHT('0' + CONVERT(nvarchar(max), DATEPART(m, Date_Field)), 2) + '/' + 
    RIGHT('0' + CONVERT(nvarchar(max), DATEPART(d, Date_Field)), 2) + '/' + 
    CONVERT(nvarchar(max), DATEPART(yyyy, Date_Field)) + ' ' + 
    RIGHT('0' + CONVERT(nvarchar(max), DATEPART(hour, Date_Field)), 2) + ':' + 
    RIGHT('0' + CONVERT(nvarchar(max), DATEPART(minute, Date_Field)), 2) + 
    RIGHT(CONVERT(VARCHAR(30), Date_Field, 9), 2) 

Затем вы можете использовать пользовательские разделители между датой и временем, добавьте секунды (или миллисекунды, и т.д.), как вам нужно. Оберните его в UDF, если вы найдете необходимость использовать его много.

Смежные вопросы