2014-05-04 75 views
0

這裏是一個在下面如何在SQL查詢轉換的MS Access在ODBC

enter image description here enter image description here

我的查詢下面給出的是給表圖像,

$ DB2->查詢(」 SELECT CHECKINOUT.USERID,USERINFO.CardNo FROM CHECKINOUT INNER JOIN USERINFO ON CHECKINOUT.USERID = USERINFO.USERID WHERE CHECKTIME BETWEEN'$ start_date'AND'$ tommorow'AND USERINFO.CardNo <> NULL「)

我想要做的查詢在ODBC像下面

$ DB2->查詢(「選擇CHECKINOUT.USERID,USERINFO.CardNo FROM CHECKINOUT INNER JOIN USERINFO ON CHECKINOUT.USERID = USERINFO.USERID WHERE格式(檢查時間, 'DD/MM/YYYY')之間的 '$起始日期' 和 '$明天' AND USERINFO.CardNo <> NULL「)

但查詢的ODBC它並不完美,它已與所有最新數據日期差異數據。

如何在ODBC ACCESS數據庫中進行完美查詢。

請給我任何解決方案。

+0

爲什麼使用格式?你的日期實際上是字符串? –

+0

查詢將採取日期,我將只輸入日期(不是日期時間)。由於這些原因,我使用日期格式。請提供任何建議。 –

+0

格式將日期轉換爲字符串。如果你打算使用它,但你不應該這樣做,那麼所有三個日期都需要採用相同的格式,並且必須在具有前導零的年月日(或年份日月),否則它將無法工作。永遠記得'04/05/2013'不是一個字符串的日期。從查詢中取出格式函數,看看會發生什麼,我只能從這裏根據你給出的信息來猜測。 –

回答

0
SELECT CHECKINOUT.USERID,USERINFO.CardNo FROM CHECKINOUT 
    INNER JOIN USERINFO ON CHECKINOUT.USERID = USERINFO.USERID 
    WHERE CHECKTIME 
    BETWEEN #$start_date# AND #$tommorow# AND USERINFO.CardNo <> NULL 

我從屏幕圖像中看到CHECKTIME是日期時間數據類型。如果您要將查詢發送到MS-Access,則日期必須包含英鎊符號(#)而不是單引號。您不需要將它們格式化爲字符串,除非另有說明,否則使用日期的默認值是午夜(00:00)。

最好的解決辦法是複製粘貼此查詢到MS-Access查詢設計器,並確保它爲您提供您所期望的結果。否則,在MS-Access設計器中創建查詢並查看它返回格式的SQL。

注意,如果你開始日期和明天之間說會之間,例如6月 - 2014年通過00:00的7月 - 2014年00:00。所以這取決於你的「明天」(一天的開始或一天結束)的意思。