mysql - shell 脚本打印给定日期的所有半小时 block 的列表

标签 mysql shell

我想为任何给定日期生成以下列表以传递到 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'

最佳答案

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

尝试此操作,如果发现任何问题,请回复我。

关于mysql - shell 脚本打印给定日期的所有半小时 block 的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52069956/

相关文章:

mysql - 转换为分区表

python argparse shell 特殊字符

MySQL 服务器已在 CakePHP bake 控制台中消失

mysql - 了解连接查询

mysql - 使用 where 子句从 MySQL 中选择随机条目

bash - 预期的音频采样率与实际不匹配?

linux - unix find without sort 逆向打印结果

linux - 如何在GNU并行中插休眠眠?

linux - bash 陷阱 : How to Get Line Number of a Subprocess with Non-Zero Status

MySQL If else 构造语法