SQL查询 - 将查询中的日期格式更改为DD/MM/YYYY

15 sql sql-server sql-server-2008

我想要实现的目标是相当直接的,将一种日期格式转换为另一种格式;

从这个:Jan 30 2013 12:00:00:000AM 到这个:DD/MM/YYYY或者在这种情况下30/01/2013

但是,当它是月份的第1天到第9天时,日期格式缺少零,并且有两个空格,如图所示;

Jul  3 2014 12:00:00:000AM
Run Code Online (Sandbox Code Playgroud)

我已经寻求解决方案,但没有成功,日期的格式是不寻常的,并且根据月份的日期而有所不同,但是这种格式是由内部系统生成的,不能更改.那么我是否必须模式匹配才能更改格式?我该怎么做呢?

查询的一部分示例是这样的;

SELECT
PREFIX_TableName.ColumnName1 AS Name,
PREFIX_TableName.ColumnName2 AS E-Mail,
PREFIX_TableName.ColumnName3 AS TransactionDate,
PREFIX_TableName.ColumnName4 AS OrderNumber,
...
Run Code Online (Sandbox Code Playgroud)

要编辑的行是这个 PREFIX_TableName.ColumnName3 AS TransactionDate,

Rom*_*esh 29

如果DB是SQL Server那么

select Convert(varchar(10),CONVERT(date,YourDateColumn,106),103)
Run Code Online (Sandbox Code Playgroud)


huM*_*pty 6

如果我理解你的问题,试试这样的话

declare @dd varchar(50)='Jan 30 2013 12:00:00:000AM'

Select convert(varchar,(CONVERT(date,@dd,103)),103)
Run Code Online (Sandbox Code Playgroud)

更新

SELECT
PREFIX_TableName.ColumnName1 AS Name,
PREFIX_TableName.ColumnName2 AS E-Mail,
convert(varchar,(CONVERT(date,PREFIX_TableName.ColumnName3,103)),103) AS TransactionDate,
PREFIX_TableName.ColumnName4 AS OrderNumber
Run Code Online (Sandbox Code Playgroud)


con*_*ned 4

如果您有日期(或日期时间)列,请查看http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

 SELECT DATE_FORMAT(datecolumn,'%d/%m/%Y') FROM ...
Run Code Online (Sandbox Code Playgroud)

应该为 MySQL 完成这项工作,对于 SqlServer 我确信有一个模拟函数。如果您有 VARCHAR 列,您可能必须首先将其转换为日期,请参阅STR_TO_DATEMySQL。