如何将日期转换为格式为"mm/dd/yyyy"

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)

  • 这对于首先转换为日期是正确的,但是`111`是针对`yyyy/mm/dd`,OP已经具有正确的样式(101). (8认同)

mat*_*mmo 22

使用CONVERT说明Value101,同时将数据转换为date:

CONVERT(VARCHAR(10), CAST(Created_TS AS DATE), 101)
Run Code Online (Sandbox Code Playgroud)


pet*_*erm 5

你在找这样的东西吗?

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演示