我有一張看起來像這樣的桌子。
ID | 營業時間 | 其他 |
---|---|---|
1 | [“09:00-14:30”、“19:00-21:30”] | jj |
2 | [“10:00-14:00”] | kk |
3 | [“01:00-04:00”、“05:00-08:00”、“10:00-15:00”、“16:00-00:00”] | pp |
我想知道目前(NOW())商店是否開放,即它是否屬於特定日期給出的範圍之一。如何在 SQL 查詢中執行此操作?我試圖通過類似的東西來實現它
SELECT * FROM data
WHERE TIME(NOW) BETWEEN one of the ranges specified in open_hours;
SELECT test.id,
CAST(SUBSTRING_INDEX(jsontable.timerange, '-', 1) AS TIME) timestart,
CAST(SUBSTRING_INDEX(jsontable.timerange, '-', -1) AS TIME) timeend,
test.other
FROM test
CROSS JOIN JSON_TABLE(test.open_hours,
'$[*]' COLUMNS (timerange VARCHAR(255) PATH '$')) jsontable
HAVING CURRENT_TIME BETWEEN timestart AND timeend;
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=30b7dfac8d89b774a7ddb29f890889d9
附註。我強烈建議您遵循nbk的建議並規範化數據。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句