我想为任何给定日期生成以下列表以传递MySQL查询。
示例:给定日期为“ 2018-08-28”
我需要输出为
between '2018-08-28 00:00:00' and '2018-08-28 00:29:59'
between '2018-08-28 00:30:00' and '2018-08-28 00:59:59'
between '2018-08-28 1:00:00' and '2018-08-28 1:29:59'
between '2018-08-28 1:30:00' and '2018-08-28 1:59:59'
-
-
-
-
between '2018-08-28 23:00:00' and '2018-08-28 23:29:59'
between '2018-08-28 23:30:00' and '2018-08-28 23:59:59'
答案 0 :(得分:0)
DECLARE @dtStart AS DATETIME ='20180828 00:00:00'
,@dtEnd AS DATETIME = '20180828 23:59:59'
,@iInterval AS INT = 30; --30 min interval
WITH aCTE
AS(
SELECT
@dtStart AS StartDateTime,
DATEADD(MINUTE,@iInterval,@dtStart) AS EndDateTime
UNION ALL
SELECT
DATEADD(MINUTE,@iInterval,StartDateTime),
DATEADD(MINUTE,@iInterval,EndDateTime)
FROM aCTE
WHERE
DATEADD(MINUTE,@iInterval,EndDateTime) <= @dtEnd
)
SELECT
CONVERT(VARCHAR(10),StartDateTime,108)
+ ' ' + RIGHT(CONVERT(VARCHAR(30), StartDateTime, 9), 2)
+ ' - ' +
CONVERT(VARCHAR(10),EndDateTime,108)
+ ' ' + RIGHT(CONVERT(VARCHAR(30), EndDateTime, 9), 2) AS Result
FROM aCTE
尝试此操作,如果发现任何问题,请回复我。