relationalai.std.dates.datetime.fromdate()
datetime.fromdate( date: date|Producer hour: int|Producer = 0, minute: int|Producer = 0, second: int|Producer = 0, millisecond: int|Producer = 0 tz: tzinfo|str|Producer = "UTC") -> Expression
Constructs a UTC datetime value from a date value.
If date
or one of the time components is a Producer
object, then datetime.fromdate()
also acts as a filter and removes invalid values from the producer.
If tz
is specified, the datetime is converted to UTC from the specified timezone or offset string.
Must be called in a rule or query context.
Parameters
Section titled “Parameters”Name | Type | Description |
---|---|---|
date | date or Producer | The Date value to convert to DateTime . |
Returns
Section titled “Returns”An Expression
object.
Example
Section titled “Example”Use datetime.fromdate()
to construct a UTC datetime value from a date value:
import relationalai as raifrom relationalai.std import dates
# =====# SETUP# =====
model = rai.Model("MyModel")Event = model.Type("Event")
with model.rule(): Event.add(id=1).set(date=dates.date(2021, 1, 1), hour=9, minute=30) Event.add(id=2).set(date="invalid", hour=10, minute=30)
# =======# EXAMPLE# =======
with model.rule(): event = Event() # Since Event 2 has an invalid date, datetime.fromdate() will filter it out # and the following will only set the time property for Event 1. event.set( time=dates.datetime.fromdate(event.date, event.hour, event.minute) ) # The following only sets the has_valid_date property for Event 1. event.set(has_valid_date=True)
with model.query() as select: event = Event() response = select(event.id, event.time, event.has_valid_date)
print(response.results)# id time has_valid_date# 0 1 2021-01-01 09:30:00 True# 1 2 NaT NaN
If the tz
parameter is specified, the datetime is converted to UTC from the specified timezone or offset string:
with model.query() as select: event = Event(id=1) time_tz = dates.datetime.fromdate(event.date, event.hour, event.minute, tz="America/New_York") response = select(event.time, alias(time_tz, "time_tz"))
print(response.results)# time time_tz# 0 2021-01-01 09:30:00 2021-01-01 14:30:00
Refer to the timezone database for a list of valid timezone identifiers.