返回列表 上一主題 發帖

[發問] SQL如何用儲存格參數(日期)作條件依據

本帖最後由 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 & ")"

TOP

本帖最後由 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  ) 所以在文字中要做轉換

TOP

        靜思自在 : 有心就有福,有願就有力,自造福田,自得福緣。
返回列表 上一主題