2014-12-13 70 views
1

我有這樣的數據:SQL服務器字符串轉換爲日期時間失敗

+-----+---------+----------+ 
| id | name | expdate | 
+-----+---------+----------+ 
| 1 | chookies| 02/2015 | 
| 2 | snack | 03/2015 | 
| 3 | snack1 | 04/2015 | 
+-----+---------+----------+ 

expdate數據類型爲varchar(7),我想知道在那裏截止日期從現在到03/2015餅乾的名稱。

我想這一點,但得到一個錯誤:

select  
    id, name, 
    convert(datetime, '01/' + expdate, 103) 
from 
    cookies 
where 
    datediff(month, datetime, convert(datetime, '01/' + expdate, 103)) 

錯誤:

Conversion failed when converting datetime from character string.

我使用SQL Server 2005中,我缺少什麼?

任何人都可以幫助我嗎?

謝謝

+0

檢查'expdate'列'month'值是否大於'12'如'13/2015'' – 2014-12-13 16:33:25

+0

有沒有數據大於12 – empugandring 2014-12-13 16:37:27

+1

對我來說它的工作原理是它應該檢查這個'declare @date varchar (7)= '12/2015'' '選擇轉換(日期時間,'01 /' + @日,103)' – 2014-12-13 16:40:57

回答

0

嘗試:

select 
    id, name, expdate 
from 
    cookies 
where 
    convert(datetime, '01/' + expdate, 103) between getdate() 
               and convert(datetime, '01/03/2015', 103) 

沒有必要使用datediff功能,你只需要檢查expdate是一定時期內之間。

此外,您會收到此錯誤,因爲datediff函數中的第二個參數應該是有效的日期,而不僅僅是字符串'datetime'。

1

這可以用一個簡單的where子句中完成之間,像這樣:

select id,name,convert(datetime,'01/'+expdate,103) 
from cookies 
where convert(datetime,'01/'+expdate,103) between getdate() and convert(datetime,'2015-03-01 00:00:00.000') 
相關問題