2016-08-01 5 views
1

У меня есть поле даты под названием TimeStampUTC в формате 2016-08-01 03:00:00.000, но мне нужно, чтобы вернуть его в 01/08/2016изменить формат даты

Я использую следующий запрос

SELECT Convert(varchar(2),DATEPART(DAY, a.TimeStampUTC)) + '/'+ Convert(varchar(2),DATEPART(MONTH, a.TimeStampUTC)) + '/' + Convert(varchar(4),DATEPART(year, a.TimeStampUTC)) AS Date FROM table AS a WHERE a.TimeStampUTC > '$startDate' AND a.TimeStampUTC <='$endDate' 

Выпуск его возвращения 1/8/2016

Как написать запрос, чтобы вернуть его как 01/08/2016.

+0

как о 'обращенного (varchar (15), TimeStampUTC, 101) ' – Sankar

+0

@SankarRaj Вы предлагаете использовать это без конвертации дня, месяца и года отдельно? –

+0

Если это поле даты, не нужно разбирать компоненты, вы можете преобразовать его в строку с одним из многих форматов. –

ответ

1

Вы можете получить разные форматы даты и времени, используя CONVERT() funct иона,

SELECT 
Convert(varchar(15),TimeStampUTC,103) AS Date 
FROM table AS a 
WHERE a.TimeStampUTC > '$startDate' AND a.TimeStampUTC <='$endDate' 

Здесь вы можете найти различные коды формата даты: http://www.w3schools.com/sql/func_convert.asp

0

вы можете использовать DATE_FORMAT()

DATE_FORMAT (yourdate, '% d-% m-% Y')

для справки: sql date formats

+0

SQL Server не имеет функции 'DATE_FORMAT()', SQL Server 2012 и new имеют 'FORMAT()', но способ ввода формата даты отличается от того, что у вас здесь. –

0
declare @TimeStampUTC datetime='2016-08-01 03:00:00.000' 
     select CONVERT(VARCHAR(10),convert(date,@TimeStampUTC),103) 
0

Предполагая, что вы ищете DD/MM/YYYY, вы можете попробовать это:

select REPLACE(CONVERT(varchar(15), a.TimeStampUTC, 105),'-','/') 
+1

Не нужно заменять тире косой чертой, можно просто использовать код формата '103'. Также 103 и 105 оба имеют день первый, а не месяц. –

+0

Да, это тоже работает! Спасибо, Харт, я тоже кое-что узнал :) – Ket

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