我有一個excel,我用select讀取dbf文件。我想從每個code_id中選擇最後的日期時間。vba excel datetime innerjoin
Code_id daytime
1 12-01-2016 9:58:12
1 12-01-2016 10:01:12
2 12-01-2016 10:54:01
2 12-01-2016 11:01:01
一個結果我得到:
1 12-01-2016 9:58:12
2 12-01-2016 11:01:01
我想結果是:
1 12-01-2016 10:01:12
2 12-01-2016 11:01:01
似乎有一個問題,當時間從09到10,因爲如果時間從去10到11或11到12我得到最後一次,但是當時間從9到10時,它獲得最後一次9而不是時間10
是我的代碼有問題嗎?
SELECT b.code_id, COUNT(*) AS cnt, b.name,
b.type, a.tp
FROM " & Filename & " b
INNER JOIN (select code_id, MAX(daytime) AS tp
FROM " & Filename & " group by code_id) a
ON a.code_id = b.code_id
where DateValue(daytime) <= Date()
group by b.code_id, b.name,
b.type, a.tp
order by b.code_id
在我看來,日期時間不被認爲是這樣,而是作爲一個簡單的文本。並且在一個文本內比較9是在1之後。那是9:58:12(作爲文本比較)在10:01:12之後。您需要將其轉換爲日期時間或在9之前添加0。 – Ralph
如何轉換字段? – dave
您必須要求Excel進行轉換。正如你所說,dbf只能按原樣讀取。所以,你首先必須(1)導入整個數據,然後(2)重新格式化它,以便識別日期和時間,然後你可以(3)按照上面的語句中所示將它分組到你喜歡的位置。要將文本轉換爲日期和時間,可以使用'CDate()',如下例所示:http://stackoverflow.com/questions/20375233/excel-vba-convert-text-to-date – Ralph