Roh*_*aan 25 sql t-sql sql-server sql-server-2008
我有一个sql table
名为date date的列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
Run Code Online (Sandbox Code Playgroud)
现在我想转换这些格式mm\dd\yyyy
作为我在比较的日期或之前WHERE
我的条款SELECT
查询.
我试过用
CONVERT(VARCHAR(10),CREATED_TS,101)
Run Code Online (Sandbox Code Playgroud)
但得到了结果,
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
Run Code Online (Sandbox Code Playgroud)
我需要结果,例如.02/20/2012
为了比较.
任何帮助将不胜感激.
Rom*_*kar 42
由于您的数据已经在varchar中,您必须先将其转换为日期:
select convert(varchar(10), cast(ts as date), 101) from <your table>
Run Code Online (Sandbox Code Playgroud)
mat*_*mmo 22
使用CONVERT
说明Value
符101
,同时将数据转换为date
:
CONVERT(VARCHAR(10), CAST(Created_TS AS DATE), 101)
Run Code Online (Sandbox Code Playgroud)
你在找这样的东西吗?
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
Run Code Online (Sandbox Code Playgroud)
输出:
| 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演示