![]() |
access的sql查詢日期
各位先進們好,我在access有一個資料表,我想利用查詢將已超過一星期的訂單找出來,我的日期格式是98/10/10,請問在sql裡要怎麼寫?要先將它轉換成數字嗎?如果是,我轉了好久轉不出來,麻煩大大們不吝指教,謝謝。
|
不曉得你的問題解決了沒...
(如果你的日期欄位, 格式是[日期]格式, 直接用下面的方式應該就可以了) select * from 資料表 where 訂單日期 < #2009/3/3# - 7 select * from 資料表 where 訂單日期 < NOW - 7 如果你的日期欄位, 格式是[文字], 那就非常麻煩了 因為年度本身還有 3位數的問題(再2年就民國100年了) 而月份還有[1月] v.s [01月] 的問題 你得先確定文字的格式完完全全是 xxx/xx/xx (年度是3位數, 月份一定是2位數, 日期也必須是2位數) 這樣才能夠用SQL指令去比對... |
感謝大大,我的問題已經解決了,但你的方法比較簡單明瞭,不過我現在還有一個問題就是,我不止想將超過一星期的單子調出來,我還要排除重覆的客戶名稱,不知道有沒有辦法?謝謝。
|
select distinct 客戶名稱, 訂單日期 from 資料表 where 訂單日期 < NOW - 7
================ 加上distinct 可以將 【完全重複】的整筆資料, 剔除到只剩1筆 如果你的欄位中有流水號, 那麼加上distinct也沒用(因為整筆記錄當中流水號不會重複) 例如:原本資料有... 客戶A, 2009/3/10 客戶B, 2009/3/11 客戶A, 2009/3/10 客戶C, 2009/3/10 客戶A, 2009/3/10 客戶C, 2009/3/12 則加上Distinct之後會剩下 客戶A, 2009/3/10 客戶B, 2009/3/11 客戶C, 2009/3/10 客戶C, 2009/3/12 (【客戶A, 2009/3/10】 有3筆完全相同,所以2筆被剔除) |
再次感謝,其實我是想要查詢結單超過一星期但客戶沒有新訂單進來的方法,因為我們的東西會一直循環,算消耗品,所以我想追蹤客戶上次給我們做完後,超過一星期沒有再有新訂單進來,或許我一開始想法就錯了,還望大大指教,謝謝。
|
所以你是要查...
超過1個星期都沒有訂單的客戶囉... Select * from 客戶資料表 where 客戶ID not IN ( select distinct 客戶ID from 訂單資料表 where 訂單日期 < NOW - 7 ) 找出客戶ID 【不在】 7天內進行下訂的 |
感謝大大,雖然我還是RUN不起來,不過我先用
SELECT * FROM 客戶基本資料表 WHERE DateDiff("d",結單日期,Now())>7; 這個跑一陣看看有沒有問題再說,另外想再請教一個問題就是 我想把各個客戶的金額加總,但我不知道怎麼做升幂排列,我想 把加總起來金額由大排到小,以下是我的寫法,但不知怎麼排列 SELECT 客戶名稱, SUM(報價金額) AS [SUM(報價金額)] FROM 客戶基本資料表 GROUP BY 客戶名稱; 麻煩您了,謝謝... |
引用:
SELECT * FROM 客戶基本資料表 WHERE DateDiff("d",結單日期,Now())>7; 這種寫法在普通情況下可以用,但如果你遇到【全新的客戶】 完全都還沒下過訂單,就會找不到了... (如果一開始建立 客戶基本資料表 時,就有預設一個結單日期, 那就完全ok) ======================== 在進行order by時,不能用別名... 也就是說,你設了一個 欄位,實際資料是【SUM(報價金額)】的時候, 排序時就必須照著寫【SUM(報價金額)】 而別名最好不要寫成【[SUM(報價金額)]】, 雖然也是可以...但不太建議... SELECT 客戶名稱, SUM(報價金額) AS 加總金額 FROM 客戶基本資料表 GROUP BY 客戶名稱 order by SUM(報價金額); SELECT 客戶名稱, SUM(報價金額) AS [SUM(報價金額)] FROM 客戶基本資料表 GROUP BY 客戶名稱 order by SUM(報價金額); |
感謝大大,升幂及降幂排列已解決,但之前那個問題,我是有設結單日期的,我有設建表日期及結單日期,但我實際去RUN時,很奇怪的是有些筆數明明在條件範圍之內,但竟然沒秀出來,倒不是直接出現錯誤訊息...這個我可能還要再想想
|
抱歉大大,剛才又發現了一個問題,結單日期超過一星期可用
SELECT * FROM 客戶基本資料表 WHERE DateDiff("d",結單日期,Now())>7; 但結單日超過一個月似乎好像沒辦法再用 SELECT * FROM 客戶基本資料表 WHERE DateDiff("d",結單日期,Now())>30; 是不是因為sql沒辦法計算誇月的問題?:em03: |
我都是直接用 [日期欄位] 減掉數字
select now - 10 as [10天前] select now - 100 as [100天前] select now - 200 as [200天前] 使用DateDiff...也可以(超過1個月也支援) select DateDiff("D", #2009/1/1#, now()) as [天數差距] |
大大您好,我是想查詢結單日期過一個月的客戶資料,但我每個結單日期都不一樣,我的方式是
SELECT * FROM 客戶基本資料表 WHERE DateDiff("d",結單日期,Now())+30; 但好像不管用=.=:em02: |
where DateDiff("d",結單日期,Now())+30 ???
假設 DateDiff("d",結單日期,Now()) 的結果是50... 那你的判斷式就是.. SELECT * FROM 客戶基本資料表 where 80 (where 80.......並沒有判斷行為.......) |
所以如果我想查詢2009/10/15前三十天的資料就輸入您教我的式子
select DateDiff("D", #2009/10/15#, now()) as 30 這樣就可以了嗎?但它怎麼知道我想查詢的是那個資料表呢? |
呃..............................................................
請改成下面的寫法... SELECT * FROM 客戶基本資料表 WHERE DateDiff("d",結單日期,Now()) < 30 SELECT * FROM 客戶基本資料表 WHERE DateDiff("d",結單日期,Now()) > 30 |
所有時間均為台北時間。現在的時間是 10:44 AM。 |
Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.
『服務條款』
* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *