标签: date-range

Ruby的范围步骤方法导致执行速度非常慢?

我有这段代码:

date_counter = Time.mktime(2011,01,01,00,00,00,"+05:00")
@weeks = Array.new
(date_counter..Time.now).step(1.week) do |week|
   logger.debug "WEEK: " + week.inspect
   @weeks << week
end
Run Code Online (Sandbox Code Playgroud)

从技术上讲,代码有效,输出:

Sat Jan 01 00:00:00 -0500 2011
Sat Jan 08 00:00:00 -0500 2011
Sat Jan 15 00:00:00 -0500 2011
etc.
Run Code Online (Sandbox Code Playgroud)

但执行时间完全是垃圾!每周计算大约需要4秒钟.

我在这段代码中遗漏了一些奇怪的低效率吗?看起来很简单.

我正在使用Rails 3.0.3运行Ruby 1.8.7.

ruby ruby-on-rails range date-range

6
推荐指数
1
解决办法
2704
查看次数

如何快速过滤满足日期范围条件的对象

我有很多对象

public class Restriction
{
    // which days this restriction applies to
    public DateTime From { get; set; }
    public DateTime To { get; set; }

    // valid applicable restriction range
    public int Minimum { get; set; }
    public int Maximum { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我可以拥有

IList<Restricton> restrictions;
Run Code Online (Sandbox Code Playgroud)

然后搜索在特定日期应用的限制

restrictions.Where(r => day >= r.From && day <= r.To);
Run Code Online (Sandbox Code Playgroud)

问题

我认为使用IList<T>不是最佳选择,因为我将对这些限制进行大量搜索,每次调用LINQ方法时.Where,都会枚举和过滤整个集合.

从SQL知识我知道表扫描总是比索引扫描更糟,所以我想在这里应用类似的逻辑.每次我宁愿以更聪明的方式过滤,而不是枚举整个集合.

什么是更好(更快)的枚举我的限制的方法,所以我的算法不会每次我想要过滤掉一些算法时都会对它们进行枚举?

我在想,IDictionary<K,V>但它仍然需要扫描它们,因为我的限制不是每天设定,而是每天设定.

你会建议什么?

c# collections filtering date-range

6
推荐指数
1
解决办法
1644
查看次数

PHP,查看日期范围是否部分在另一个日期范围内

我一直在寻找这个,但答案似乎无处可去.这是问题所在:

说,我有两个日期范围.

$daterange1 = 2012-04-20 till 2012-04-28 
$daterange2 = 2012-04-18 till 2012-05-01
Run Code Online (Sandbox Code Playgroud)

现在,我想知道daterange2是否在daterange1之内.但是,正如您所看到的,daterange2仅部分位于daterange1内.是否有任何方法可以获得3个变量,例如:

  1. 2012-04-18至2012-04-20
  2. 2012-04-20至2012-04-28
  3. 2012-04-28至2012-05-01

我知道这听起来有点模糊,但我真的不知道如何解释它不同.

php date date-range

6
推荐指数
2
解决办法
2772
查看次数

在活动记录中使用yii2日期范围

我的数据库中有一个日期字段,其日期类型为数据类型,如何根据特定日期范围使用活动记录来获取数据?

$model = ModelName::find()
        ->where(["date"=>"FROM '2015-06-21' TO '2015-06-27' ", "status"=>1])->all();
Run Code Online (Sandbox Code Playgroud)

date-range yii2

6
推荐指数
1
解决办法
1万
查看次数

Postgres Left加入条件

我需要在两个表中加入一个where条件:

time_table
id     rid        start_date                end_date
1       2     2017-07-01 00:00:00     2018-11-01 00:00:00
2       5     2017-01-01 00:00:00     2017-06-01 00:00:00
3       2     2018-07-01 00:00:00     2020-11-01 00:00:00
Run Code Online (Sandbox Code Playgroud) record_table
id      name                 date
1      record1       2017-10-01 00:00:00
2      record2       2017-02-01 00:00:00
3      record3       2017-10-01 00:00:00
Run Code Online (Sandbox Code Playgroud)

我需要获取在给定日期范围内出现的所有记录.在上面的例子中,我需要那些rid = 2仅在范围内的记录.因此,上述查询的输出必须是:

1      record1       2017-10-01 00:00:00    
3      record3       2017-10-01 00:00:00
Run Code Online (Sandbox Code Playgroud)

mysql sql postgresql date-range left-join

6
推荐指数
1
解决办法
5517
查看次数

选择没有日期范围重叠的行

想象一下下Loans表:

BorrowerID       StartDate         DueDate
=============================================
1                2012-09-02        2012-10-01
2                2012-10-05        2012-10-21
3                2012-11-07        2012-11-09
4                2012-12-01        2013-01-01
4                2012-12-01        2013-01-14
1                2012-12-20        2013-01-06
3                2013-01-07        2013-01-22
3                2013-01-15        2013-01-18
1                2013-02-20        2013-02-24
Run Code Online (Sandbox Code Playgroud)

我如何选择BorrowerID那些一次只获得一笔贷款的人?这包括那些只购买过一笔贷款的借款人,以及那些已经拿出一笔以上贷款的借款人,前提是如果你要划出贷款的时间表,那么这些贷款都不会重叠.例如,在上表中,它应该只找到借款人1和2.

我已经尝试过尝试将表加入到自身中,但实际上还没有成功.任何指针都非常感谢!

sql sql-server date-range

5
推荐指数
1
解决办法
2744
查看次数

Google 自定义搜索日期范围

我一直在尝试为在 Google 自定义搜索上获得的结果设置一个日期范围,但还不知道如何设置。到目前为止,我的网址如下所示:

https://www.googleapis.com/customsearch/v1?key=MY_KEY&cx=MY_OTHER_KEY&q=bigdata&alt=json&fields=queries(request,nextPage),items(title,link,snippet)&cr=&start=1
Run Code Online (Sandbox Code Playgroud)

例如,我试图获取 01/01/2014 到 02/01/2014 范围内的结果。有什么办法可以做到吗?

date-range google-custom-search

5
推荐指数
0
解决办法
2196
查看次数

创建自定义日期范围,每天 22 小时 python

我正在与 pandas 合作,想要创建一个为期一个月的自定义日期范围,其中一周从周日晚上 6 点开始,到周五下午 4 点结束。每天有 22 小时,例如周日下午 6 点到周一下午 4 点,周一下午 6 点到周二下午 4 点,等等。

我试过了day_range = pd.date_range(datetime(2016,9,12,18),datetime.now(),freq='H'),但总是在 24 小时内给我。

有什么建议么?

python datetime date-range hour pandas

5
推荐指数
1
解决办法
1435
查看次数

如何防止用户在反应日期中选择结束日期以上的日期

我想知道如何防止用户选择高于今天日期的日期。例如,今天是 3.7,所以让它成为用户可以选择的最高结束日期。

<DateRangePicker
    startDate={this.state.startDate} 
    startDateId="startDate" 
    endDate={this.state.endDate} 
    endDateId="endDate" 
    onDatesChange={({ startDate, endDate }) => {
      this.setState({ startDate, endDate }, () => {});
    }} 
    focusedInput={this.state.focusedInput} // PropTypes.oneOf([START_DATE, END_DATE]) or null,
    onFocusChange={focusedInput => this.setState({ focusedInput })} // PropTypes.func.isRequired,
    daySize={50}
    noBorder={true}
    isOutsideRange={() => false}
/>
Run Code Online (Sandbox Code Playgroud)

html javascript date-range reactjs airbnb-js-styleguide

5
推荐指数
1
解决办法
5915
查看次数

我如何将 Postgres DateRange 类型与 TypeOrm 一起使用

我尝试使用 Nest.js 框架实现基本的酒店预订系统。我使用 TypeOrm 和 Postgres 数据库。

我有一个预订实体(酒店的房间预订)并且 Booking 应该有一个 DateRange(从入住到退房日期)。

我找不到如何在 TypeOrm 中使用 DateRange 对象类型。

@Entity({ name: 'booking' })
export class Booking{
    @PrimaryGeneratedColumn()
    id: number;

    @Column({ 
        type: 'daterange', // I expect to find DateRange type here
    })
    date_range: any;
}
Run Code Online (Sandbox Code Playgroud)

任何的想法?

postgresql date-range typeorm

5
推荐指数
1
解决办法
415
查看次数