Exemplo n.º 1
0
def test_timestamp_arithmetics():
    ts1 = api.timestamp(datetime.datetime.now())
    ts2 = api.timestamp(datetime.datetime.today())

    i1 = api.interval(minutes=30)

    # TODO: raise for unsupported operations too
    for expr in [ts2 - ts1, ts1 - ts2]:
        assert isinstance(expr, ir.IntervalScalar)
        assert isinstance(expr.op(), ops.TimestampDiff)
        assert expr.type() == dt.Interval('s', dt.int32)

    for expr in [ts1 - i1, ts2 - i1]:
        assert isinstance(expr, ir.TimestampScalar)
        assert isinstance(expr.op(), ops.TimestampSub)

    for expr in [ts1 + i1, ts2 + i1]:
        assert isinstance(expr, ir.TimestampScalar)
        assert isinstance(expr.op(), ops.TimestampAdd)
Exemplo n.º 2
0
    assert isinstance(a, ir.DateValue)
    assert isinstance(b, ir.DateValue)
    assert isinstance(a_, ir.DateValue)
    assert isinstance(i, ir.IntervalValue)
    assert isinstance(expr, ir.BooleanValue)


def test_interval_column_name(table):
    c = table.i
    expr = (c - c).name('foo')
    assert expr._name == 'foo'


@pytest.mark.parametrize(
    'operand',
    [lambda t: api.timestamp(datetime.datetime.now()), lambda t: t.i],
    ids=['column', 'literal'],
)
@pytest.mark.parametrize(
    'unit',
    [
        'Y',
        'y',
        'year',
        'YEAR',
        'YYYY',
        'SYYYY',
        'YYY',
        'YY',
        'Q',
        'q',