簡體   English   中英

將 SQL 查詢發送到 Excel VBA 上的 CSV 文件不適用於日期列

[英]Sending SQL Queries to CSV file on Excel VBA doesn't work for Date Columns

我正在嘗試從超過 300 萬行的 csv 文件中獲取一些數據。 我已經為我的 csv 文件設置了一個 ADODB 連接,除了查詢日期列外,一切正常。

這是我設置連接的方式

Dim conn As New ADODB.Connection
Dim rst As New ADODB.Recordset

With conn
   .Provider = "Microsoft.ACE.OLEDB.16.0"
   .ConnectionString = "Data Source=" & fileDirPath & ";Extended Properties='text'"
End With

conn.Open

我發送的查詢是

SELECT * FROM my_csv.csv WHERE myDate < 2030-12-01

盡管 myDate 列中的所有日期都小於 2030-12-01,但記錄集返回空結果。 它不是那個日期的特定日期,任何帶有 myDate 列的查詢都返回空。 非常感謝您的支持。

我的 schema.ini 文件看起來像

[my_csv.csv]
DecimalSymbol=.
Format=CSVDelimited
ColNameHeader=True
DateTimeFormat=YYYY-MM-DD
DecimalSymbol=,
Col1=org_id Text 
Col2=app_id Text 
Col3=myDate Date(YYYY-MM-DD)
Col4=valid Text

這是我的數據的格式

cpt_id,rmn_id,myDate,valid
1285230,652671575,2019-03-12,true
1956123,1384198347,2019-03-15,true
2123640,1901167025,2019-02-21,true
2231241,1021153291,2019-03-02,true
7349946,1462824644,2019-03-07,true
7349946,4661867294,2019-03-16,true
1956123,3611518899,2019-03-01,true

在我看來,查詢中指定的日期似乎需要用引號引起來,以防止數據成為減法問題。 嘗試這個:

SELECT * FROM my_csv.csv WHERE myDate < '2030-12-01'

我沒有太多使用 ACE 數據庫驅動程序,如果它像舊的 JET,它可能需要井號 (#) 作為日期文字,所以如果上面的方法不起作用,請嘗試以下操作:

SELECT * FROM my_csv.csv WHERE myDate < #2030-12-01#

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM