標題:
[發問]
SQL如何用儲存格參數(日期)作條件依據
[打印本頁]
作者:
dou10801
時間:
2023-1-30 15:15
標題:
SQL如何用儲存格參數(日期)作條件依據
SQL如何用儲存格參數(日期)作條件依據,感恩.
作者:
lpk187
時間:
2023-1-30 22:13
MySQL = "select * from [sheet1$a1:f] where Format(開單日期,'ddddd') = '" & ms2 & "'"
作者:
singo1232001
時間:
2023-1-31 05:59
本帖最後由 singo1232001 於 2023-1-31 06:01 編輯
回復
1#
dou10801
'求某天
'ms2 = Format([g1], "yyyy-mm-dd")
'MySQL = "select * from [sheet1$a1:f] where Format(開單日期,'yyyy-MM-dd') = '" & ms2 & "'" '大小寫有差
'求某天並日期時間遞增排序
'ms2 = Format([g1], "yyyy-mm-dd")
'MySQL = "select * from [sheet1$a1:f] where Format(開單日期,'yyyy-MM-dd') = '" & ms2 & "' " & " order by 開單日期 asc" '大小寫有差
'求當天某時段 2019/1/1 11:00~14:00
'ms31 = Format(#1/1/2019 11:00:00 AM#, "yyyy-mm-dd HH:nn:ss")
'ms32 = Format(#1/1/2019 2:00:00 PM#, "yyyy-mm-dd HH:nn:ss")
'MySQL = "select * from [sheet1$a1:f] where Format(開單日期,'yyyy-MM-dd HH:nn:ss') between '" & ms31 & "' and'" & ms32 & "'" '大小寫有差
'求連續天數 2019/1/1~2019/1/2
'ms41 = Format([g1], "yyyy-mm-dd")
'ms42 = Format([g1] + 1, "yyyy-mm-dd")
'MySQL = "select * from [sheet1$a1:f] where Format(開單日期,'yyyy-MM-dd') between '" & ms41 & "' and'" & ms42 & "'" '大小寫有差
'求任幾個天數 2019 1/1 ,1/3, 1/5
'ms51 = Format(#1/1/2019#, "'yyyy-mm-dd'")
'ms52 = Format(#1/3/2019#, "'yyyy-mm-dd'")
'ms53 = Format(#1/5/2019#, "'yyyy-mm-dd'")
'MySQL = "select * from [sheet1$a1:f] where Format(開單日期,'yyyy-MM-dd') in(" '大小寫有差
'MySQL = MySQL & ms51 & ","
'MySQL = MySQL & ms52 & ","
'MySQL = MySQL & ms53 & ")"
作者:
dou10801
時間:
2023-1-31 08:42
感謝 lpk187及 singo1232001兩位前輩指導,對初學SQL語法受益良多,更感恩singo1232001加碼指點對其他日期運用查詢更靈活.
作者:
hcm19522
時間:
2023-1-31 11:30
https://blog.xuite.net/hcm19522/twblog/590705213
作者:
singo1232001
時間:
2023-1-31 16:49
本帖最後由 singo1232001 於 2023-1-31 16:50 編輯
回復
4#
dou10801
抱歉 更正一下
關於vba 中Format 有字數上限 (而sql的Format沒有 )
所以 ms31 查詢時間的例子中
ms31 = Format(#1/1/2019 11:00:00 AM#, "yyyy-mm-dd HH:nn:ss") '產出的文字 可能會斷行 秒數就可能會消失
建議改成拚字的方式
ms31 = Format(#1/1/2019 11:00:00 AM#, "yyyy-mm-dd & " " & format(#1/1/2019 11:00:00 AM#, "HH:nn:ss")
或者
ms31 = Format([g1], "yyyy-mm-dd") & " " & format(#11:00:00 AM#, "HH:nn:ss")
或者
ms31 = Format([g1], "yyyy-mm-dd") & " " & "11:00:00"
當然你也可以一次把 '符號給拼出來 之後就不用加
ms31 = Format([g1], "'yyyy-mm-dd") & " " & "11:00:00'"
(另外補充 在vba中 能運算的默認日期格式 是2019/1/1 , 而SQL中 能運算的默認格式是2019-1-1 ) 所以在文字中要做轉換
作者:
lpk187
時間:
2023-1-31 20:37
回復
6#
singo1232001
ADODB寫SQL語法,拼接的方式,最容易出錯了(以後的閭題也會很多),建議寫SQL時最好使用參數的方式,就沒有你上述的問題了!
Set cmd = CreateObject("ADODB.Command")
cmd.CommandText = "Select Max(Id) From [進貨$] Where 進貨日期=@進貨日期"
cmd.Prepared = True
cmd.Parameters.Append cmd.CreateParameter("@進貨日期", adDate, adParamInput, , [G1])
cmd.ActiveConnection = conn
Set rs = cmd.Execute
作者:
dou10801
時間:
2023-2-1 08:07
回復
7#
lpk187
lpk187前輩,是否能依上方檔案
sql 日期1.rar,作實際示範學習.感恩.
作者:
Scott090
時間:
2023-2-15 06:57
感謝各位
對SQL 的 日期格式轉換需求的提點
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)