16

我正在使用CONVERT(data_type(length),expression,style)函数来更改 SELECT 查询中的日期格式。

声明 @dt nvarchar(20)

从 SalesTable 中选择 @dt = Convert(nvarchar(20), SalesDate, 113)

我需要的格式是“dd-MMM-yyyy”(例如“05-Jul-2013”​​),但我找不到适合这种特定格式的样式编号(例如 113)。有人可以帮我吗?

4

7 回答 7

33

尝试这个:

Declare @dt NVARCHAR(20)

Select 
    @dt = REPLACE(CONVERT(CHAR(15), SalesDate, 106),' ',' - ') 
FROM SalesTable
于 2013-08-13T06:42:29.800 回答
13
select CONVERT(NVARCHAR, SYSDATETIME(), 106) AS [DD-MON-YYYY]

要不然

select REPLACE(CONVERT(NVARCHAR,GETDATE(), 106), ' ', '-')

两者都工作正常

于 2014-05-28T10:03:20.533 回答
8

默认情况下似乎不支持 DD-MMM-YYYY (至少,使用破折号作为分隔符)。但是,使用 AS 子句,您应该能够执行以下操作:

SELECT CONVERT(VARCHAR(11), SYSDATETIME(), 106) AS [DD-MON-YYYY]

见这里:http ://www.sql-server-helper.com/sql-server-2008/sql-server-2008-date-format.aspx

于 2013-08-13T06:55:26.910 回答
5

我认为这是最好的方法。

REPLACE(CONVERT(NVARCHAR,CAST(WeekEnding AS DATETIME), 106), ' ', '-')

因为您不必使用,varchar(11)否则varchar(10)将来可能会出现问题。

于 2013-09-24T09:01:24.237 回答
1
SELECT Convert(varchar(10),CONVERT(date,'columnname',105),105) as "end";

或者

SELECT CONVERT(VARCHAR(10), CAST(event_enddate AS DATE), 105) AS [end];

将以 'dd-mm-yyyy' 格式返回特定日期

结果会是这样。。

04-07-2016
于 2016-07-04T09:23:25.490 回答
1
select convert(varchar(11), transfer_date, 106)

得到了我想要的日期结果,格式为 2018 年 3 月 7 日

我的列transfer_date是日期时间类型列,我在 Azure 上使用 SQL Server 2017

于 2018-03-12T06:55:54.553 回答
0

这里的其他答案似乎返回了相当宽的列。

此答案返回一个 varchar(11),这是 dd-Mon-yyyy 格式的日期所需的全部内容。

'SalesDate' = CONVERT(VARCHAR(11),REPLACE(CONVERT(VARCHAR(11),SalesDate, 106), ' ', '-')),

也试试:

select CONVERT(VARCHAR(11),REPLACE(CONVERT(VARCHAR(11),getdate(), 106), ' ', '-'))

截至今天,结果如下:2021 年 7 月 22 日

于 2021-07-16T00:34:10.057 回答