date.fromdatetime()#

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

Constructs a date value from a datetime value by discarding the time components. If tz is specified, the datetime is converted to the specified timezone or offset string before extracting the date. Must be called in a rule or query context.

Parameters#

NameTypeDescription
datetimeProducer or Python datetime object.The datetime value to convert to a date.
tztzinfo or str or ProducerOptional 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 indentifiers. (Default: "UTC").

Returns#

An Expression object.

Example#

Use date.fromdatetime() to construct a date value from a datetime value:

#import relationalai as rai
from relationalai.std import dates

# =====
# SETUP
# =====

model = rai.Model("MyModel")
Event = model.Type("Event")

# Add an event with a time property.
with model.rule():
    Event.add(id=1).set(time=dates.datetime(2020, 1, 1, 1))  # 1:00 AM on January 1, 2020


# =======
# EXAMPLE
# =======

# Set a date property using the time property.
with model.rule():
    event = Event()
    event.set(date=dates.date.fromdatetime(event.time))

with model.query() as select:
    event = Event()
    response = select(event.id, event.time, event.date)

print(response.results)
#    id                time       date
# 0   1 2020-01-01 01:00:00 2020-01-01

Pass a timezone or offset string to the tz parameter to convert the datetime from UTC to a different timezone before extracting the date:

#with model.query() as select:
    event = Event()
    date1 = dates.date.fromdatetime(event.time, tz="America/New_York")
    date2 = dates.date.fromdatetime(event.time, tz="+0600")
    response = select(event.id, event.time, alias(date1, "date1"), alias(date2, "date2"))

print(response.results)
#    id                time      date1      date2
# 0   1 2020-01-01 01:00:00 2019-12-31 2020-01-01

Refer to the timezone database for a list of valid timezone identifiers.

See Also#