如何将日期转换为格式`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】:
使用CONVERT
和Value
说明符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 格式的字符串转换为日期时间 [重复]