2013-02-07 28 views
0

我還有一個(可能)很容易就問題的Sybase ASE 15.5回答...之間進行選擇的數據不是我的熱門話題:-(的Sybase - 2個日期

我有有一個日期列臨時表。

的日期被插入到使用臨時表的轉換,其將實況數據

例如:

2013-01-21 10:05:00.0 
2013-01-28 08:03:00.0 

21/01/2013 
28/01/2013 

using (CONVERT(VARCHAR(10), DATEFIELD, 103) 

我面臨的問題是,當我嘗試使用的日期範圍過濾器來選擇從LIVE表中的數據到臨時表:

WHERE (CONVERT(VARCHAR(10), DATEFIELD, 103) BETWEEN '21/01/13' AND '28/01/13') 

....當我運行這個sybase只會插入21/01/2013的日期而不是28/01/2013。

.....此外,如果我用29/01/2013結束日期,而不是即

WHERE (CONVERT(VARCHAR(10), DATEFIELD, 103) BETWEEN '21/01/13' AND '29/01/13') 

我得到兩個插入:

21/01/2013 
28/01/2013 

進一步此外 - 如果我只運行21/01/13 ie

WHERE (CONVERT(VARCHAR(10), DATEFIELD, 103) BETWEEN '21/01/13' AND '21/01/13') 

我什麼也沒得到。

任何想法?

也許在sybase中使用BETWEEN並不好。只是爲了清楚,字段從DATETIME轉換爲VARCHAR(10)。

我的另一個問題是,當我有這第一部分修復我想能夠通過例如通配符

WHERE (CONVERT(VARCHAR(10), DATEFIELD, 103) BETWEEN '%' AND '%') 

....但目前這一個也不工作。

任何想法都在這些問題上。

在此先感謝。

Gareth

回答

1

那麼你不需要轉換爲varchar。我假設你的領域是日期時間。

convert(date, DATEFIELD, 103) 

而且以後還可以: (TST cenario)

create table #temp1 (Datatst datetime) 
insert into #temp1 values('2013-01-21 10:05:00.0') 
insert into #temp1 values('2013-01-28 08:03:00.0') 

select Datatst from #temp1 
where convert(date,Datatst,103) between '21/Jan/13' AND '28/Jan/13' 

Datatst

2013-01-21 10:05:00.0 
2013-01-28 08:03:00.0 

(我的字符集CP850)