請問我有查詢語法如下
原本全部在win 7開發編譯完運行都正常可查,改WIN10 就無法查出資料
但我把這串放到access的查詢設計裡可以正常撈到資料
用where ID=XXX 正常,懷疑是日期語法問題
但VISUAL STUDIO沒有報錯也不知錯在哪?
資料表裡的日期格式是這樣2015/7/31 下午 07:33:00
SELECT Access.ID, Mid(Access.DrNo,2,2) AS Expr1, Format([Access.Date],'yyyy/mm/dd') AS Expr2, Format([Access.Date],'Short Time') AS Expr3
FROM Access
WHERE Access.Date Between Dateadd('d',-1,date()) And now();
Windows10 →開始→設定→日期與時間→右上的【日期、時間及地區格式設定】→右上的【其他日期、時間與地區設定】→選最下方的【變更日期、時間或數字格字】
把畫面中這兩項選成有TT的格式,下方的簡短及完整時間要出現"上午、下午",就對了
反正就是要弄得跟你的資料庫裡的日期時間格式相同
資料庫的日期時間不要用字串型式存放,不然存的時候要轉toLocaleString,以後換別的系統就會冒出這種怪現象
我測試了還是一樣抓不了
Date確定不是文字格式儲存
你開發平台是?
win10 + vs2017
因資料庫端是win10跟一個刷卡機軟體
只是要抓出資料轉TXT入到考勤
我的做法是用刷卡機原廠提供的sdk去機器內讀取記錄(我們可能不會是同一家硬體)
那你是從原廠的MDB裡去讀資料,你是用OLEDB連還是ODBC?最簡單的方法就是你用SqlCommand串查詢句,日期時間自己用ToString("yyyy/MM/dd TT hh/mm/ss")轉成字串去串SQL
如果你的指紋機也是對岸ZKTeco的話,可以考慮直接用SDK去叫記錄,還挺簡單的,我用VS2019 C# .Net 5.0去調都沒問題
https://www.zkteco.com/en/download_catgory/46.html
廠商沒有提供SDK可用,我也找原廠官網看看
是用OLEDB查的,您說的是select date tostring這樣嗎?
你的查詢方式是什麼?LINQ?SqlCommand ?
是SqlCommand
可不可以貼出你的where 之後是怎麼寫的?
如果是題目上寫的那樣,那建議你在C#裡就把日期時間轉成字串格式下去查,在ACCESS裡日期時間可以用字串比對及區間查詢
DateTime now = DateTime.Now;
string dateStart = (now.AddDays(-1).ToString("yyyy/MM/dd tt hh:nn:ss");
string dateEnd = now.ToString("yyyy/MM/dd tt hh:nn:ss");
string SQL = ".............. WHERE Access.Date Between "+DateStart+" And "+dateEnd+ ";";
SqlCommand command = new SqlCommand(SQL,connstr);
//後面就你自己理解了
下面這串,放ACCESS裡是可以WORK
近期都先讓同事手動轉,再來找問題原因
Dim cmdtex As String = "SELECT Access.ID, Mid(Access.DrNo,2,2) AS Expr1, Format([Access.Date],'yyyy/mm/dd') AS Expr2, Format([Access.Date],'Short Time') AS Expr3 FROM Access WHERE Access.Date Between Dateadd('d',-1,date()) And now()"
access 沒經過oledb或jet來轉,所以不會出現時間字串的問題