日期:2014-05-17  浏览次数:20508 次

请问如何返回一个日期的"年-月"部分,不要日
比如现有日期2012-11-06,想要得到2012-11应该怎么做呢?
sql2000 sp4
------最佳解决方案--------------------
declare @datetime datetime

set @datetime='2012-1-1'

select ltrim(year(@datetime))+'-'+ltrim(month(@datetime))

select convert(varchar(7),@datetime,120)

select left(convert(varchar(23),@datetime,120)),left(convert(varchar(23),@datetime,120)))-charindex('-',reverse(convert(varchar(23),@datetime,120))))
------其他解决方案--------------------
select left(convert(varchar(10),'2012-11-6',23),7)
------其他解决方案--------------------
select left('2012-11-06',7)
------其他解决方案--------------------
引用:
select left('2012-11-06',7)

可以
------其他解决方案--------------------
select CONVERT(varchar(7),GETDATE(),120)
/*

-------
2012-11

(1 行受影响)
*/

------其他解决方案--------------------
只能通过这种对字符串的截取来达到目的吗?有没有直接的方式呢?
按照上面的方法,如果源日期是"2012-1-1"则得到的结果是"2012-1-"
------其他解决方案--------------------

select convert(varchar(7),列名,120) as 日期 from 表 where 条件

------其他解决方案--------------------
哎 在access的时候只要指定格式为yyyy-mm就可以了  想不到到了sql遇到各种麻烦
------其他解决方案--------------------
select cast(YEAR('2012-1-1') as CHAR(4))+'-'+cast(MONTH('2012-1-1') as varchar(2))

------其他解决方案--------------------
引用:
只能通过这种对字符串的截取来达到目的吗?有没有直接的方式呢?
按照上面的方法,如果源日期是"2012-1-1"则得到的结果是"2012-1-"

如果類型是datetime/smalldatetime 的話是得到"2012-01" 的,除非你是自己手動輸入的"2012-1-1"
------其他解决方案--------------------
引用:
引用:只能通过这种对字符串的截取来达到目的吗?有没有直接的方式呢?
按照上面的方法,如果源日期是"2012-1-1"则得到的结果是"2012-1-"
如果類型是datetime/smalldatetime 的話是得到"2012-01" 的,除非你是自己手動輸入的"2012-1-1"


原来是这样,谢谢