[英]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.