Sql server 将DateTime转换为nvarchar,仅需月份和年份
如何将datetime值转换为nvarchar并将其格式化为“月,年”,例如2009年10月1日的值应转换为“2009年10月”一种方法是使用datename以名称格式提取所需的片段,因此: 选择Convert(nvarchar,datename(m,getdate())+N','+Convert(nvarchar,datename (yy,getdate())Sql server 将DateTime转换为nvarchar,仅需月份和年份,sql-server,sql-server-2005,tsql,Sql Server,Sql Server 2005,Tsql,如何将datetime值转换为nvarchar并将其格式化为“月,年”,例如2009年10月1日的值应转换为“2009年10月”一种方法是使用datename以名称格式提取所需的片段,因此: 选择Convert(nvarchar,datename(m,getdate())+N','+Convert(nvarchar,datename (yy,getdate()) 并用日期变量/字段替换getdate()。DateName函数将提供所需的格式: DATENAME(m, date) + ', ' +
并用日期变量/字段替换getdate()。DateName函数将提供所需的格式:
DATENAME(m, date) + ', ' + DATENAME(yyyy, date)
可以通过cast函数转换为特定大小的nvarchar:
CAST(value AS nvarchar[30])
试试这个
DECLARE @DateTime DATETIME
SET @DateTime = '01 Oct 2009'
SELECT @DateTime
SELECT DATENAME(mm, @DateTime) + ', ' + CAST(DATEPART(yy, @DateTime) AS VARCHAR(4))
使用以下命令:
select CONVERT(nvarchar(50), DATENAME(m, getdate())
+ ', '
+ DATENAME(yyyy, getdate())
)
输出:
--------------------------------------------------
October, 2009
(1 row(s) affected)
请尝试以下查询:
Select case Convert(int, day(getdate())) when 1 then '1st' when 2 then '2nd'
when 3 then '3rd' else Convert(varchar, day(getdate()))+'th' end +' '+ Convert(varchar, Datename(m,getdate()))+' ' +Convert(varchar, Datename(yy,getdate())) as Date
您可以用任何其他日期替换getdate()
请检查是否有帮助。Datepart将只返回数字,需要datenameDatepart是数字表示形式,而不是名称表示形式。不幸的是,您也需要DATENAME()作为年份,就像我的答案一样,否则:Msg 245,级别16,状态1,第1行转换nvarchar值'October,'到数据类型int。不返回nvarchar作为OP请求。一次将所有内容转换为nvarchar将更有效。另外,不要忘记,如果在转换中未指定nvarchar长度,则默认值为30并将截断。例如,运行此SELECT CONVERT(nvarchar,'abcdefghijklmnopqrstuvwxyz1234567890'),您只获得前30个字符,不会看到截断的字符:“567890”,并且没有错误或警告。如果他想将其放入已声明为nvarchar的变量中,不需要转换,因为在将信息放入变量时它将隐式转换。我所知道的varchar数据不隐式转换的唯一地方是SSIS。