当前位置: 首页 > 面试题库 >

如何选择两个日期之间的所有时间?

袁法
2023-03-14
问题内容
declare @minDateTime as datetime;
declare @maxDateTime as datetime;

set @minDateTime = '2014-01-13 02:00:00';
set @maxDateTime = '2014-12-31 14:00:00';

我正在寻找创建一条选择语句,该语句将每小时在@minDateTime和@maxDateTime之间返回,如下所示(没有可供选择的表。我不在寻找where子句!):

2014-01-13 02:00:00
2014-01-13 03:00:00
2014-01-13 04:00:00
...
2014-12-31 12:00:00
2014-12-31 13:00:00
2014-12-31 14:00:00

问题答案:

试试这个。使用Recursive CTE

DECLARE @minDateTime AS DATETIME;
DECLARE @maxDateTime AS DATETIME;

SET @minDateTime = '2014-01-13 02:00:00';
SET @maxDateTime = '2014-12-31 14:00:00';

;
WITH Dates_CTE
     AS (SELECT @minDateTime AS Dates
         UNION ALL
         SELECT Dateadd(hh, 1, Dates)
         FROM   Dates_CTE
         WHERE  Dates < @maxDateTime)
SELECT *
FROM   Dates_CTE
OPTION (MAXRECURSION 0)

在上面的查询Dates_CTE中,aCommon Expression Table的基本记录CTE由之前的第一个sql查询派生UNION ALL。查询结果为您提供Minimum date

UNION ALL重复执行第二个查询以获取结果。此过程 recursive 将继续进行,直到Dates少于@maxDateTime



 类似资料:
  • 问题内容: 我有这个查询,我需要选择两个日期之间的所有记录,mysql表是datetime格式。 我试过了,但是没有用。 问题答案: 尝试以下方法:

  • 如何向MaterialDatePicker添加约束以强制用户选择仅介于两个日期之间的日期?

  • 问题内容: 我有一个和。我想获取这两个日期之间的日期列表。谁能帮助我指出查询中的错误。 这是一个变量。 问题答案: 您应该将这两个日期放在单引号之间,例如。 或可以使用 请记住,第一个日期是包含日期,但第二个日期是排除日期,因为它实际上是“ 2011/02/27 00:00:00”

  • 问题内容: 我正在使用数据库存储日志,其中“日期”列保存了插入日期。日期的格式为“ MM / DD / YY”。请任何人建议我如何在两个特定日期之间选择数据。例如,我尝试了这个: 但是我想这行不通,因为日期不是数字。谢谢您的帮助!:) 问题答案: 使用关键字:

  • 问题内容: 我从csv创建一个DataFrame,如下所示: DataFrame有一个日期列。有没有一种方法来创建一个新的DataFrame(或仅覆盖现有的DataFrame),该DataFrame仅包含日期值在指定日期范围内或两个指定日期值之间的行? 问题答案: 有两种可能的解决方案: 使用布尔型掩码,然后使用 将日期列设置为,然后使用 使用布尔型掩码: 确保是系列: 制作一个布尔型面具。可以,

  • 我希望以(或)的格式,以60秒为增量生成两个日期之间的日期+时间列表。 到目前为止,我已经能够使用对象生成两个日期之间的所有日期: } 但是,我希望修改它,以便它每次使用对象以60秒的增量生成(即,它将生成1440个值,而不是每天生成一个值,因为假设开始和结束时间只有一天,每小时有60分钟,每天24小时) 谢谢