我有这段代码:
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.
我有很多对象
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>但它仍然需要扫描它们,因为我的限制不是每天设定,而是每天设定.
你会建议什么?
我一直在寻找这个,但答案似乎无处可去.这是问题所在:
说,我有两个日期范围.
$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个变量,例如:
我知道这听起来有点模糊,但我真的不知道如何解释它不同.
我的数据库中有一个日期字段,其日期类型为数据类型,如何根据特定日期范围使用活动记录来获取数据?
$model = ModelName::find()
->where(["date"=>"FROM '2015-06-21' TO '2015-06-27' ", "status"=>1])->all();
Run Code Online (Sandbox Code Playgroud) 我需要在两个表中加入一个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) 想象一下下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.
我已经尝试过尝试将表加入到自身中,但实际上还没有成功.任何指针都非常感谢!
我一直在尝试为在 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 范围内的结果。有什么办法可以做到吗?
我正在与 pandas 合作,想要创建一个为期一个月的自定义日期范围,其中一周从周日晚上 6 点开始,到周五下午 4 点结束。每天有 22 小时,例如周日下午 6 点到周一下午 4 点,周一下午 6 点到周二下午 4 点,等等。
我试过了day_range = pd.date_range(datetime(2016,9,12,18),datetime.now(),freq='H'),但总是在 24 小时内给我。
有什么建议么?
我想知道如何防止用户选择高于今天日期的日期。例如,今天是 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) 我尝试使用 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)
任何的想法?
date-range ×10
postgresql ×2
sql ×2
c# ×1
collections ×1
date ×1
datetime ×1
filtering ×1
hour ×1
html ×1
javascript ×1
left-join ×1
mysql ×1
pandas ×1
php ×1
python ×1
range ×1
reactjs ×1
ruby ×1
sql-server ×1
typeorm ×1
yii2 ×1