62

我有一个查询SQL,我必须以以下格式获取日期dd/mm/yy

示例:25/jun/2013

convertSQL server怎么办?

4

11 回答 11

67

我不确定您想要的格式是否完全匹配。但你可以接近convert()和风格106。然后,替换空格:

SELECT replace(convert(NVARCHAR, getdate(), 106), ' ', '/')
于 2013-06-20T04:50:27.417 回答
48

SQL server 2008已经有多种答案和格式类型 。但是这种方法有些模棱两可,您很难记住特定日期格式的数字。这就是为什么在 SQL Server 的下一个版本中有更好的选择。

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

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')

一些示例日期格式:

在此处输入图像描述

如果你想要更多的 SQL server 日期格式,你应该访问:

  1. 自定义日期和时间格式
  2. 标准日期和时间格式
于 2016-08-23T09:22:29.620 回答
31

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

SELECT convert(varchar, getdate(), 106)

这返回dd mon yyyy

更多在这里这可能会帮助你

于 2013-06-20T04:51:15.107 回答
11

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

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

SET language Russian

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

退货

06/апр/2015

在撰写本文时。

对于在较新版本的 SQL Server 上遇到此问题的人来说,一种避免此问题的方法 - 并且需要REPLACE

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

在 2005+ 上,可以编写一个接受 DateTime、Formatting Pattern 和 Culture 的 CLR UDF 来模拟相同的内容。

于 2015-04-06T15:40:46.063 回答
10

尝试使用以下查询。

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

结果: 2013 年 6 月 20 日

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

结果: 2013 年 6 月 20 日

于 2013-06-20T04:51:10.623 回答
2

试试这个

select convert(varchar,getdate(),100)

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

如果您需要dd/mmm/yyyy使用日期:

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

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

于 2013-09-14T05:08:10.257 回答
2

您可以使用此查询-

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

希望,这个查询可以帮助你。

谢谢!!

于 2019-06-20T13:09:15.467 回答
1

试试这个 :

select replace ( convert(varchar,getdate(),106),' ','/')
于 2015-12-04T11:23:49.267 回答
0

任何尝试手动将日期输入到 sql server 'date type' 变量的人在输入时都使用这种格式:

'yyyy-mm-dd'

于 2017-09-07T09:59:47.063 回答
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')
于 2020-07-30T05:53:05.557 回答
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 日期格式及其转换(各种示例)

于 2020-10-22T11:04:03.640 回答