Подтвердить что ты не робот

Как конвертировать дату в формат `mm/dd/yyyy`

У меня есть sql table с столбцом даты с именем CREATED_TS, который содержит даты в другом формате, например. как показано ниже

Feb 20 2012 12:00AM
11/29/12  8:20:53 PM          
Feb 20 2012 12:00AM
11/29/12  8:20:53 PM          
Feb 20 2012 12:00AM
11/29/12  8:20:53 PM          
Nov 16 2011 12:00AM
Feb 20 2012 12:00AM
11/29/12  8:20:52 PM

Теперь я хочу преобразовать их в формат mm\dd\yyyy до того, как я сравниваю даты в WHERE статье моего запроса SELECT.

Я попытался использовать

CONVERT(VARCHAR(10),CREATED_TS,101)

но получил результат как,

Feb 20 201
11/29/12  
Feb 20 201
11/29/12  
Feb 20 201
11/29/12  
Nov 16 201
Feb 20 201
11/29/12  

Мне нужен результат, например. 02/20/2012 для сравнения.

Любая помощь будет оценена.

4b9b3361

Ответ 1

Поскольку ваши данные уже находятся в varchar, вам необходимо сначала преобразовать его в дату:

select convert(varchar(10), cast(ts as date), 101) from <your table>

Ответ 2

Используйте CONVERT с помощью спецификатора Value 101, введя ваши данные в date:

CONVERT(VARCHAR(10), CAST(Created_TS AS DATE), 101)

Ответ 3

Вы ищете что-то вроде этого?

SELECT CASE WHEN LEFT(created_ts, 1) LIKE '[0-9]' 
            THEN CONVERT(VARCHAR(10), CONVERT(datetime, created_ts,   1), 101)
            ELSE CONVERT(VARCHAR(10), CONVERT(datetime, created_ts, 109), 101)
      END created_ts
  FROM table1

Вывод:

| CREATED_TS |
|------------|
| 02/20/2012 |
| 11/29/2012 |
| 02/20/2012 |
| 11/29/2012 |
| 02/20/2012 |
| 11/29/2012 |
| 11/16/2011 |
| 02/20/2012 |
| 11/29/2012 |

Вот SQLFiddle demo

Ответ 4

Использование:

select convert(nvarchar(10), CREATED_TS, 101)

или

select format(cast(CREATED_TS as date), 'MM/dd/yyyy') -- MySQL 3.23 and above