28

我有一个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的日期之前将这些转换为格式。WHERESELECT

我尝试使用

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

5 回答 5

50

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

select convert(varchar(10), cast(ts as date), 101) from <your table>
于 2013-09-02T08:22:58.387 回答
25

CONVERT与 , 的Value说明符一起使用101,同时将您的数据转换为date

CONVERT(VARCHAR(10), CAST(Created_TS AS DATE), 101)
于 2013-09-02T08:16:32.073 回答
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

输出:

| 创建_TS |
|------------|
| 2012 年 2 月 20 日 |
| 2012 年 11 月 29 日 |
| 2012 年 2 月 20 日 |
| 2012 年 11 月 29 日 |
| 2012 年 2 月 20 日 |
| 2012 年 11 月 29 日 |
| 2011 年 11 月 16 日 |
| 2012 年 2 月 20 日 |
| 2012 年 11 月 29 日 |

这是SQLFiddle演示

于 2013-09-02T08:40:22.430 回答
1

利用:

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

或者

select format(cast(CREATED_TS as date), 'MM/dd/yyyy') -- MySQL 3.23 and above
于 2017-11-10T08:37:56.077 回答
0

SQL Server 中的日期默认为 YYYY-MM-DD 格式。如果您想将 SQL Server 中的任何列转换为出生日期或发货日期、制造日期等......到 dd/mm/yyy 格式,您可以使用以下方法。

首先要了解,格式化任何列仅适用于向用户描述输出,并且不会对数据的存储方式有任何价值。这意味着数据将以原始格式存储在服务器中,但是当显示输出时,您可以控制它的显示方式。

要转换 dd/mm/yyyy 格式的列,您可以使用以下命令:

假设有一个名为 Employee_Details 的表,如下所示:

     ID     Dept  Salary   DOB
1   Akash   HR  30000   1989-02-25
2   Milind  Finance 45000   1975-12-15
3   Ananya  Admin   25000   1988-08-13
4   Girish  Finance 58000   1989-05-19
5   Ujwala  HR  28000   1997-04-26
6   Mahesh  Sales   60000   1982-11-15
7   Supriya Marketimg   80000   1979-09-30
8   Nidhi   Admin   25789   1980-03-02
9   Jai Sales   70000   1999-07-06
10  Aditya  Sales   56000   1980-02-28

我将隐藏 DOB 列以 dd/mm/yyyy 格式在别名列中显示结果

Select ID,Name,Department,Salary,Convert(nvarchar,DOB,103) as DateofBirth from EMPLOYEE_DETAILS
`````````````````````````````````````````````````````[enter image description here][1]

Hope this will help


  [1]: https://i.stack.imgur.com/zCJFc.jpg
于 2021-08-18T22:50:05.413 回答