在SQL Server中将日期格式转换为DD / MMM / YYYY格式

时间:2013-06-20 04:44:24

标签: sql sql-server sql-server-2008 sql-server-2012

我在sql中有一个查询,我必须以dd/mmm/yy

的格式获取日期

示例:25/jun/2013

如何将其转换为SQL Server?

11 个答案:

答案 0 :(得分:61)

我不确定您想要的格式是否完全匹配。但是你可以使用convert()和样式106来结束。然后,替换空格:

SELECT replace(convert(NVARCHAR, getdate(), 106), ' ', '/')

答案 1 :(得分:44)

SQL Server 2008已经有multiple answers and formatting types。但是这种方法有些含糊不清,你很难记住特定日期格式的数字。这就是为什么在SQL Server的下一个版本中有更好的选择。

如果您使用的是SQL Server 2012或更高版本,则应使用Format() function

FORMAT ( value, format [, culture ] )

使用文化选项,您可以根据观众指定日期。

DECLARE @d DATETIME = '10/01/2011';
SELECT FORMAT ( @d, 'd', 'en-US' ) AS 'US English Result'
      ,FORMAT ( @d, 'd', 'en-gb' ) AS 'Great Britain English Result'
      ,FORMAT ( @d, 'd', 'de-de' ) AS 'German Result'
      ,FORMAT ( @d, 'd', 'zh-cn' ) AS 'Simplified Chinese (PRC) Result'; 

SELECT FORMAT ( @d, 'D', 'en-US' ) AS 'US English Result'
      ,FORMAT ( @d, 'D', 'en-gb' ) AS 'Great Britain English Result'
      ,FORMAT ( @d, 'D', 'de-de' ) AS 'German Result'
      ,FORMAT ( @d, 'D', 'zh-cn' ) AS 'Chinese (Simplified PRC) Result';

US English Result Great Britain English Result  German Result Simplified Chinese (PRC) Result
----------------  ----------------------------- ------------- -------------------------------------
10/1/2011         01/10/2011                    01.10.2011    2011/10/1

US English Result            Great Britain English Result  German Result                    Chinese (Simplified PRC) Result
---------------------------- ----------------------------- -----------------------------  ---------------------------------------
Saturday, October 01, 2011   01 October 2011               Samstag, 1. Oktober 2011        2011年10月1日

对于OP的解决方案,我们可以使用以下格式,@Martin Smith已经提到过:

FORMAT(GETDATE(), 'dd/MMM/yyyy', 'en-us')

一些示例日期格式:

enter image description here

如果您想要更多SQL Server的日期格式,请访问:

  1. Custom Date and Time Format
  2. Standard Date and Time Format

答案 2 :(得分:30)

我们可以将日期转换为多种格式,例如

SELECT convert(varchar, getdate(), 106)

这会返回dd mon yyyy

More Here这可能会对您有所帮助

答案 3 :(得分:9)

已接受的答案已经在2008年使用内置格式化方法提供了最佳解决方案。

应该注意的是,返回的结果取决于登录的语言。

SET language Russian

SELECT replace(CONVERT(NVARCHAR, getdate(), 106), ' ', '/') 

返回

06/апр/2015

在撰写本文时。

对于在更新版本的SQL Server上遇到此问题的人来说,避免此问题的方法 - 以及对REPLACE的需求是

FORMAT(GETDATE(),'dd/MMM/yyyy', 'en-us')

在2005年以上,可以编写一个接受DateTime,格式化模式和文化的CLR UDF来模拟它。

答案 4 :(得分:8)

尝试使用以下查询。

SELECT REPLACE(CONVERT(VARCHAR(11),GETDATE(),6), ' ','/');  
  

结果: 20 / Jun / 13

SELECT REPLACE(CONVERT(VARCHAR(11),GETDATE(),106), ' ','/');  
  

结果: 20 / Jun / 2013

答案 5 :(得分:1)

试试这个

select convert(varchar,getdate(),100)

第三个参数是格式,范围从100114,任何一个都适合你。

如果您需要dd/mmm/yyyy中的日期,请使用此:

replace(convert(char(11),getdate(),113),' ','-')

getdate()替换为您的列名。这对我有用。

答案 6 :(得分:1)

试试这个:

select replace ( convert(varchar,getdate(),106),' ','/')

答案 7 :(得分:0)

任何人都试图手动输入日期到sql server'日期类型'变量在输入时使用此格式:

  

'yyyy-mm-dd'

答案 8 :(得分:0)

您可以使用此查询-

SELECT FORMAT (getdate(), 'dd/MMM/yy') as date

希望,此查询对您有帮助。

谢谢!

答案 9 :(得分:0)

转换为日期后的格式(在SQL Server v.2017中测试)

dd/mon/yyyy
Select Format(cast('25/jun/2013' as date),'dd/MMM/yyyy')

dd/mm/yyyy
Select Format(cast('25/jun/2013' as date),'dd/MM/yyyy')

dd/Month/yyyy
Select Format(cast('25/jun/2013' as date),'dd/MMMM/yyyy')

答案 10 :(得分:0)

只需获取日期并进行转换

Declare @Date as Date =Getdate()

Select Format(@Date,'dd/MM/yyyy') as [dd/MM/yyyy] // output: 22/10/2020
Select Format(@Date,'dd-MM-yyyy') as [dd-MM-yyyy] // output: 22-10-2020

//string date
Select Format(cast('25/jun/2013' as date),'dd/MM/yyyy') as StringtoDate // output: 25/06/2013

来源:SQL server date format and converting it (Various examples)