2010-03-26 174 views
1

我在Access 2007數據庫中有一個表。所有字段都是文本類型。使用where子句可以完成以下任務嗎?如果是這樣如何?SQl按日期範圍查詢

  • SELECT從表1 * WHERE(ColumnDate是2010年3月的第26和19之間)
  • SELECT從表1 * WHERE(ColumnAge是25和40之間)通常< < =運算

似乎沒有工作。

感謝,

回答

5
SELECT * from Table1 WHERE (CDATE(ColumnDate) BETWEEN #03/26/2010# AND #03/19/2010#) 
SELECT * from Table1 WHERE (CINT(ColumnAge) between 25 and 40) 

日期在#MM/DD/YYYY#表示在#符號之間的訪問。 你應該真的將日期存儲爲日期字段:)

+0

謝謝, 我需要搜索那些年齡介於25到40歲之間的人。 – tecno 2010-03-26 10:07:22

+0

BETWEEN結果包括兩個外部範圍值。你應該得到年齡在25歲到40歲之間的人。 – Codesleuth 2010-03-26 10:10:06

+0

謝謝再次感謝。 – tecno 2010-03-26 10:16:19

1
SELECT * from Table1 WHERE ColumnDate between '2010-03-26' and '2010-03-19' 
SELECT * from Table1 WHERE ColumnAge between 25 and 40 

我不使用Access,所以因人而異。

+0

您不使用Access,併發布不會在Access中運行的SQL。如果列中的所有日期存儲爲yyyy-mm-dd,則第一個將起作用,但不以其他方式存儲。第二個不行,因爲原來的問題說所有的字段都是文本。 – 2010-03-26 19:04:47

1

嘗試使用CDate函數將ColumnDate轉換爲實際日期/時間。我想可以用CInt來完成轉換爲int的操作。

我不使用Access,所以這只是一個常識性的猜測。

+0

這些內置的SQL函數,如果是這樣,他們如何在查詢中調用它們。一個例子,將不勝感激。 – tecno 2010-03-26 10:09:34

+0

其實Anton Gogolev的回答提醒我把它們放到我的樣本中。所以,他配得上我:) – Codesleuth 2010-03-26 10:11:16

0

Mr.David-W-Fenton說得對,Marcelo的第一個SELECT * from Table1 WHERE ColumnDate between '2010-03-26' and '2010-03-19'不工作,並且錯誤地暗示原因。該條款是不正確的,因爲日期字符串表示引號,日期格式非常好。所以我認爲

SELECT * from Table1 WHERE CDATE(ColumnDate) between #2010-03-26# and #2010-03-19#

一個妥善的解決辦法。

+0

唷,你說得對,我只是跟着馬塞洛。謝謝,修復查詢。 – 2012-12-02 08:23:29