Ответ 1
Поскольку ваши данные уже находятся в varchar, вам необходимо сначала преобразовать его в дату:
select convert(varchar(10), cast(ts as date), 101) from <your table>
У меня есть 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
для сравнения.
Любая помощь будет оценена.
Поскольку ваши данные уже находятся в varchar, вам необходимо сначала преобразовать его в дату:
select convert(varchar(10), cast(ts as date), 101) from <your table>
Используйте CONVERT
с помощью спецификатора Value
101
, введя ваши данные в date
:
CONVERT(VARCHAR(10), CAST(Created_TS AS DATE), 101)
Вы ищете что-то вроде этого?
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
Использование:
select convert(nvarchar(10), CREATED_TS, 101)
или
select format(cast(CREATED_TS as date), 'MM/dd/yyyy') -- MySQL 3.23 and above