使用SQL Server 2000如何獲得年月日起
日期像20120101, 20120201, 20120301...
Fomat是yyyymmdd
我想從日像01/2012顯示年份和月份,02/2012,03/2012 ...
期望輸出
01/2012
02/2012
03/2012
我不想1/2012, 2/2012, 3/2012...
任何一個可以給我一個想法或查詢幫助....
使用SQL Server 2000如何獲得年月日起
日期像20120101, 20120201, 20120301...
Fomat是yyyymmdd
我想從日像01/2012顯示年份和月份,02/2012,03/2012 ...
期望輸出
01/2012
02/2012
03/2012
我不想1/2012, 2/2012, 3/2012...
任何一個可以給我一個想法或查詢幫助....
您可以使用這樣的事情:
DECLARE @input VARCHAR(20)
SET @input = '20120101'
-- convert the 20120101 to a DATETIME
DECLARE @thedate DATETIME
SELECT @thedate = CONVERT(DATETIME, @input, 112)
-- reformat that DATETIME to your needs
DECLARE @output VARCHAR(20)
SET @output = RIGHT('00' + CAST(DATEPART(MONTH, @thedate) AS VARCHAR(2)), 2) +
'/' + CAST(DATEPART(YEAR, @thedate) AS VARCHAR(4))
SELECT @output
你可以「隱藏」這個功能到用戶自定義功能,使之更容易在代碼中使用:
CREATE FUNCTION dbo.MonthYearFromDate (@input VARCHAR(20))
RETURNS VARCHAR(20)
AS BEGIN
DECLARE @thedate DATETIME
SELECT @thedate = CONVERT(DATETIME, @input, 112)
DECLARE @output VARCHAR(20)
SET @output = RIGHT('00' + CAST(DATEPART(MONTH, @thedate) AS VARCHAR(2)), 2) + '/' + CAST(DATEPART(YEAR, @thedate) AS VARCHAR(4))
RETURN @output
END
,然後你可以調用這個像這樣:
SELECT dbo.MonthYearFromDate('20120515')
,並得到輸出
05/2012
SELECT CAST(datepart(month,getdate()) AS CHAR) + '/' + CAST(datepart(year,getdate()) AS CHAR)
取而代之的是功能GETDATE()你需要你的日期字段。
**獲取錯誤:**消息245,級別16,狀態1,行1 - 將varchar值「/」轉換爲數據類型int時轉換失敗。 'DATEPART'返回一個'INT' - 你不能只用'INT'和一個字符串文字'/'而不用CAST或CONVERT .... –
嘗試用更新的查詢... – aleroot
使用'CAST(... AS CHAR)'(沒有指定長度)將月份和年份變成** 30個字符,固定寬度**字符串.....不完全是你想要的。另外:對於5月份,你會得到'5'作爲月份輸出 - 不是'05',因爲OP期望... –
看看SUBSTRING函數http://msdn.microsoft.com/en-us/library/ms187748.aspx
你也應該考慮將你的日期爲DATETIME(我假設你正在使用VARCHAR?)
上提取搜索()函數。它會解決你的問題。
如何?什麼是'extract()'函數?你能舉一個例子來說明如何使用它嗎?一個鏈接到它的文檔?我不熟悉SQL Server的T-SQL語言中的任何'extract()'函數.... –
你已經問過關於同一個數據集和同一個表的很多問題,所以除了marc_s的有用答案之外,值得注意的是,這是日曆表可能對你有所幫助的另一種情況。如果添加一個名爲'YYYYMMDD_Date'的列和一個名爲'Period'的列(因爲您稱其爲另一個問題),那麼您可以直接查詢和連接值,這通常比使用函數更簡單快捷。 – Pondlife