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

Posted

技术标签:

【中文标题】如何将日期转换为格式`mm/dd/yyyy`【英文标题】:how to convert date to a format `mm/dd/yyyy` 【发布时间】:2013-09-02 08:10:35 【问题描述】:

我有一个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,因为我正在比较我的SELECT 查询的WHERE 子句中的日期。

我尝试过使用

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 以便比较。

我们将不胜感激。

【问题讨论】:

您的问题是因为您将日期存储为 varchars!没有充分的理由这样做。将日期存储为日期! Please give this article a read @GarethD 他实际上应该将它们存储为日期时间 惊讶于没有人链接日期和时间样式文档图表docs.microsoft.com/en-us/sql/t-sql/functions/… 【参考方案1】:

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

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

【讨论】:

这对于首先转换为日期是正确的,但111 是用于yyyy/mm/dd,OP 已经具有正确的样式(101)。 使用您的建议获得了所需的输出,但还需要将我想比较的日期转换为这种格式.. convert(varchar(10), , 111)。但是,老实说,值得考虑将日期存储和比较为日期 @GarethD 哇,四年后我找到了你的评论。感谢指出,已更新【参考方案2】:

使用CONVERTValue 说明符101,同时将您的数据转换为date

CONVERT(VARCHAR(10), CAST(Created_TS AS DATE), 101)

【讨论】:

@DarrenDavies 向强大的 Dazefs 学习 ;) 111 用于yyyy/mm/dd,OP 具有正确的样式 (101) 问题是该列已经是 varchar 而不是日期,因此没有应用样式。【参考方案3】:

你在寻找这样的东西吗?

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

【讨论】:

【参考方案4】:

用途:

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

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

【讨论】:

【参考方案5】:

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

【讨论】:

以上是关于如何将日期转换为格式`mm/dd/yyyy`的主要内容,如果未能解决你的问题,请参考以下文章

将格式 MM/DD/YYYY 的日期转换为 MySQL 日期 [重复]

Pandas 将日期字符串从格式 mm/d/yyyy 和 mm/dd/yyyy 转换为 dd.mm.yyyy

将 dd/mm/yyyy 格式的字符串转换为日期时间 [重复]

使用 PHP 将 mm/dd/yyyy 格式转换为纪元

如何将存储为 VARCHAR2 的日期转换为 'MM/DD/YYYY HH24:MI:SS'?

PHP 将MM / DD / YYYY转换为SQL日期格式