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

时间:2013-09-02 08:10:35

标签: sql sql-server sql-server-2008 tsql

我的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为了进行比较。

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:41)

由于您的数据已经在varchar中,您必须先将其转换为日期:

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

答案 1 :(得分:22)

CONVERT与[{1}}说明符Value一起使用,同时将数据转换为101

date

答案 2 :(得分: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

输出:

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

答案 3 :(得分:0)

使用:

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

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