我正在使用CONVERT(data_type(length),expression,style)
函数来更改 SELECT 查询中的日期格式。
声明 @dt nvarchar(20)
从 SalesTable 中选择 @dt = Convert(nvarchar(20), SalesDate, 113)
我需要的格式是“dd-MMM-yyyy”(例如“05-Jul-2013”),但我找不到适合这种特定格式的样式编号(例如 113)。有人可以帮我吗?
我正在使用CONVERT(data_type(length),expression,style)
函数来更改 SELECT 查询中的日期格式。
声明 @dt nvarchar(20)
从 SalesTable 中选择 @dt = Convert(nvarchar(20), SalesDate, 113)
我需要的格式是“dd-MMM-yyyy”(例如“05-Jul-2013”),但我找不到适合这种特定格式的样式编号(例如 113)。有人可以帮我吗?
尝试这个:
Declare @dt NVARCHAR(20)
Select
@dt = REPLACE(CONVERT(CHAR(15), SalesDate, 106),' ',' - ')
FROM SalesTable
select CONVERT(NVARCHAR, SYSDATETIME(), 106) AS [DD-MON-YYYY]
要不然
select REPLACE(CONVERT(NVARCHAR,GETDATE(), 106), ' ', '-')
两者都工作正常
默认情况下似乎不支持 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
我认为这是最好的方法。
REPLACE(CONVERT(NVARCHAR,CAST(WeekEnding AS DATETIME), 106), ' ', '-')
因为您不必使用,varchar(11)
否则varchar(10)
将来可能会出现问题。
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
select convert(varchar(11), transfer_date, 106)
得到了我想要的日期结果,格式为 2018 年 3 月 7 日
我的列transfer_date
是日期时间类型列,我在 Azure 上使用 SQL Server 2017
这里的其他答案似乎返回了相当宽的列。
此答案返回一个 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 日