Represent a SQL EXTRACT clause, ``extract(field FROM expr)``.
| 3535 | |
| 3536 | |
| 3537 | class Extract(ColumnElement[int]): |
| 3538 | """Represent a SQL EXTRACT clause, ``extract(field FROM expr)``.""" |
| 3539 | |
| 3540 | __visit_name__ = "extract" |
| 3541 | |
| 3542 | _traverse_internals: _TraverseInternalsType = [ |
| 3543 | ("expr", InternalTraversal.dp_clauseelement), |
| 3544 | ("field", InternalTraversal.dp_string), |
| 3545 | ] |
| 3546 | |
| 3547 | expr: ColumnElement[Any] |
| 3548 | field: str |
| 3549 | |
| 3550 | def __init__(self, field: str, expr: _ColumnExpressionArgument[Any]): |
| 3551 | self.type = type_api.INTEGERTYPE |
| 3552 | self.field = field |
| 3553 | self.expr = coercions.expect(roles.ExpressionElementRole, expr) |
| 3554 | |
| 3555 | @util.ro_non_memoized_property |
| 3556 | def _from_objects(self) -> List[FromClause]: |
| 3557 | return self.expr._from_objects |
| 3558 | |
| 3559 | |
| 3560 | class _label_reference(ColumnElement[_T]): |