relationalai.std.dates.month()
month(date: date|datetime|Producer, tz: str|Producer = "UTC") -> ExpressionExtracts the month component from a date or UTC datetime value.
If tz is specified, then date is converted from UTC to the specified timezone before extracting the month.
tz is ignored if date is a Python date or datetime object.
If any of the arguments are Producer objects, then month() also acts as a filter and removes invalid values from the producer.
Must be called in a rule or query context.
Parameters
Section titled “Parameters”| Name | Type | Description |
|---|---|---|
date | Producer or Python date or datetime object | The date or datetime value from which to extract the month. |
tz | Producer or Python str object | Optional timezone string (e.g., "America/New_York"), offset string (e.g., "+0600"), or Python tzinfo object. Refer to the timezone database for a list of valid timezone identifiers. Ignored if date is a Python date or datetime object. (Default: "UTC"). |
Returns
Section titled “Returns”An Expression object.
Raises
Section titled “Raises”TypeError if the date parameter is not a Producer object or Python date or datetime object.
Example
Section titled “Example”Use month() to extract the month component from date and datetime values:
import relationalai as raifrom relationalai.std import alias, dates
# =====# SETUP# =====
model = rai.Model("MyModel")Event = model.Type("Event")
with model.rule(): Event.add(id=1).set(time=dates.datetime(2021, 1, 1, 1, 30)) Event.add(id=2).set(time="invalid")
# =======# EXAMPLE# =======
with model.rule(): event = Event() # month() filters out any events with invalid time values, so the # following only sets the month property for Event 1. event.set(month=dates.month(event.time)) # Since Event 2 is filtered out above, the following only sets the # has_valid_time property for Event 1. event.set(has_valid_time=True)
with model.query() as select: event = Event() response = select(event.id, event.time, event.month, event.has_valid_time)
print(response.results)# id time month has_valid_time# 0 1 2021-01-01 01:30:00 1.0 True# 1 2 invalid NaN NaNIf the date parameter is a datetime and the tz parameter is specified, the datetime is converted from UTC to the specified timezone before computing the weekday:
with model.query() as select: event = Event() month1 = dates.month(event.time, tz="America/New_York") month2 = dates.month(event.time, tz="+0600") response = select(event.id, event.time, alias(month1, "month1"), alias(month2, "month2"))
print(response.results)# id time month1 month2# 0 1 2021-01-01 01:30:00 12 1