blob: bd7b752233fc74b44efab7f1b76a8a6f5ada4e27 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>TimeFrame (Apache Calcite API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.calcite.rel.type, interface: TimeFrame">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<div class="about-language"><b>Apache Calcite</b></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.rel.type</a></div>
<h1 title="Interface TimeFrame" class="title">Interface TimeFrame</h1>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">TimeFrame</span></div>
<div class="block">Time frame.
<p>Belongs to a <a href="TimeFrameSet.html" title="class in org.apache.calcite.rel.type"><code>TimeFrameSet</code></a>.
The default set is <a href="TimeFrames.html#CORE"><code>TimeFrames.CORE</code></a>;
to create custom time frame sets, call <a href="TimeFrameSet.html#builder()"><code>TimeFrameSet.builder()</code></a>.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button><button id="method-summary-table-tab5" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab5', 3)" class="table-tab">Default Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#canRollUpTo(org.apache.calcite.rel.type.TimeFrame)" class="member-name-link">canRollUpTo</a><wbr>(<a href="TimeFrame.html" title="interface in org.apache.calcite.rel.type">TimeFrame</a>&nbsp;toFrame)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Whether this frame can roll up to <code>toFrame</code>.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default int</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#dateEpoch()" class="member-name-link">dateEpoch</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
<div class="block">Returns a date where this time frame is at the start of a cycle.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="TimeFrameSet.html" title="class in org.apache.calcite.rel.type">TimeFrameSet</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#frameSet()" class="member-name-link">frameSet</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Returns the time frame set that this frame belongs to.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default int</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#monthEpoch()" class="member-name-link">monthEpoch</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
<div class="block">Returns a month number where this time frame is at the start of a cycle.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#name()" class="member-name-link">name</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Name of this time frame.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>@Nullable org.apache.commons.math3.fraction.BigFraction</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#per(org.apache.calcite.rel.type.TimeFrame)" class="member-name-link">per</a><wbr>(<a href="TimeFrame.html" title="interface in org.apache.calcite.rel.type">TimeFrame</a>&nbsp;timeFrame)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">If this time frame has units in common with another time frame, returns
the number of this time frame in one of that time frame.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default long</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#timestampEpoch()" class="member-name-link">timestampEpoch</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
<div class="block">Returns a timestamp where this time frame is at the start of a cycle.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default @Nullable org.apache.calcite.avatica.util.TimeUnit</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#unit()" class="member-name-link">unit</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
<div class="block">Returns the built-in unit of this frame, or null if it does not correspond
to a built-in unit.</div>
</div>
</div>
</div>
</div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="frameSet()">
<h3>frameSet</h3>
<div class="member-signature"><span class="return-type"><a href="TimeFrameSet.html" title="class in org.apache.calcite.rel.type">TimeFrameSet</a></span>&nbsp;<span class="element-name">frameSet</span>()</div>
<div class="block">Returns the time frame set that this frame belongs to.</div>
</section>
</li>
<li>
<section class="detail" id="name()">
<h3>name</h3>
<div class="member-signature"><span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">name</span>()</div>
<div class="block">Name of this time frame.
<p>A time frame based on a built-in Avatica
<code>TimeUnit</code> will have the same
name.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="TimeFrameSet.html#get(org.apache.calcite.avatica.util.TimeUnit)"><code>TimeFrameSet.get(TimeUnit)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="per(org.apache.calcite.rel.type.TimeFrame)">
<h3>per</h3>
<div class="member-signature"><span class="return-type">@Nullable org.apache.commons.math3.fraction.BigFraction</span>&nbsp;<span class="element-name">per</span><wbr><span class="parameters">(<a href="TimeFrame.html" title="interface in org.apache.calcite.rel.type">TimeFrame</a>&nbsp;timeFrame)</span></div>
<div class="block">If this time frame has units in common with another time frame, returns
the number of this time frame in one of that time frame.
<p>For example, <code>MONTH.per(YEAR)</code> returns 12;
<code>YEAR.per(MONTH)</code> returns 1 / 12.</div>
</section>
</li>
<li>
<section class="detail" id="dateEpoch()">
<h3>dateEpoch</h3>
<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">dateEpoch</span>()</div>
<div class="block">Returns a date where this time frame is at the start of a cycle.
<p>For example, the <code>WEEK</code> time frame starts on a Monday,
and <code>1970-01-05</code> was a Monday,
and the date <code>1970-01-05</code> is represented as integer 5,
so for the <code>WEEK</code> time frame this method returns 5.
But it would also be valid to return the date value of <code>1900/01/01</code>,
which was also a Monday. Because we know that a week is 7 days, we can
compute every other point at which a week advances.</div>
</section>
</li>
<li>
<section class="detail" id="timestampEpoch()">
<h3>timestampEpoch</h3>
<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">timestampEpoch</span>()</div>
<div class="block">Returns a timestamp where this time frame is at the start of a cycle.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="#dateEpoch()"><code>dateEpoch()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="monthEpoch()">
<h3>monthEpoch</h3>
<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">monthEpoch</span>()</div>
<div class="block">Returns a month number where this time frame is at the start of a cycle.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="#dateEpoch()"><code>dateEpoch()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="canRollUpTo(org.apache.calcite.rel.type.TimeFrame)">
<h3>canRollUpTo</h3>
<div class="member-signature"><span class="return-type">boolean</span>&nbsp;<span class="element-name">canRollUpTo</span><wbr><span class="parameters">(<a href="TimeFrame.html" title="interface in org.apache.calcite.rel.type">TimeFrame</a>&nbsp;toFrame)</span></div>
<div class="block">Whether this frame can roll up to <code>toFrame</code>.
<p>Examples:
<ul>
<li><code>SECOND</code> can roll up to <code>MINUTE</code>, <code>HOUR</code>,
<code>DAY</code>, <code>WEEK</code>, <code>MONTH</code>, <code>MILLENNIUM</code>;
<li><code>SECOND</code> cannot roll up to <code>MILLISECOND</code> (because it is
finer grained);
<li><code>WEEK</code> cannot roll up to <code>MONTH</code>, <code>YEAR</code>,
<code>MILLENNIUM</code> (because weeks cross month boundaries).
</ul>
<p>If two time frames have the same core, and one is an integer simple
multiple of another, and they have the same offset, then they can roll up.
For example, suppose that <code>MINUTE15</code> and <code>HOUR3</code> are both based
on <code>SECOND</code>;
<code>MINUTE15</code> is 15 * 60 seconds and
<code>HOUR3</code> is 3 * 60 * 60 seconds;
therefore one <code>HOUR3</code> interval equals twelve <code>MINUTE15</code>
intervals.
They have the same offset (both start at <code>1970-01-01 00:00:00</code>) and
therefore <code>MINUTE15</code> can roll up to <code>HOUR3</code>.
<p>Even if two frames are not multiples, if they are aligned then they can
roll up. <code>MONTH</code> and <code>DAY</code> are an example. For more about
alignment, see <a href="TimeFrameSet.Builder.html#addRollup(java.lang.String,java.lang.String)"><code>TimeFrameSet.Builder.addRollup(String, String)</code></a>.</div>
</section>
</li>
<li>
<section class="detail" id="unit()">
<h3>unit</h3>
<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="return-type">@Nullable org.apache.calcite.avatica.util.TimeUnit</span>&nbsp;<span class="element-name">unit</span>()</div>
<div class="block">Returns the built-in unit of this frame, or null if it does not correspond
to a built-in unit.</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &copy; 2012-2023 Apache Software Foundation. All Rights Reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>