week()#

relationalai.std.dates
#week(date: date | datetime | Producer, tz: str = "UTC") -> Expression

Extracts the ISO week number from a Date or DateTime value. If date is a Python date or datetime object, the tz parameter is ignored. Must be called in a rule or query context.

Parameters#

NameTypeDescription
datedate or datetime or ProducerThe Date or DateTime value from which to extract the ISO week number.
tzstrOptional timezone component for DateTime values (default is “UTC”). Ignored if date is a Python date or datetime object.

Returns#

An Expression that produces the ISO week number of the given Date or DateTime value.

Raises#

TypeError if the date parameter is not a date, datetime, or Producer object.

Example#

Use week() to extract the ISO week number from a Date value:

#import relationalai as rai
from relationalai.std import alias
from relationalai.std.dates import week, date

# Create a model named "people" with a `Person` type.
model = rai.Model("people")
Person = model.Type("Person")

# Add a person with a birth date.
with model.rule():
    Person.add(name="Alice", birth_date=date(1990, 5, 23))

# Extract the week number from birth_date.
with model.query() as select:
    person = Person()
    birth_week = week(person.birth_date)
    response = select(person.name, alias(birth_week, "birth_week"))

print(response.results)
# Output:
#     name  birth_week
# 0  Alice          21

You can also use week() to extract the ISO week number from a DateTime value:

#import relationalai as rai
from relationalai.std import alias
from relationalai.std.dates import week, datetime

# Create a model named "people" with a `Person` type.
model = rai.Model("people")
Person = model.Type("Person")

# Add a person with a birth datetime.
with model.rule():
    Person.add(
        name="Bob",
        born_at=datetime(1985, 8, 15, 15, 45, 0, tz="UTC")
    )

# Extract the week number from `born_at`.
with model.query() as select:
    person = Person()
    birth_week = week(person.born_at)
    response = select(person.name, alias(birth_week, "birth_week"))

print(response.results)
# Output:
#   name  birth_week
# 0  Bob          33

See Also#