How to get month and year from Date field in sqlalchemy?

前端 未结 2 530
谎友^
谎友^ 2021-01-01 15:54

The result should be Date object

Since the day cannot be \'removed\', set it to say, 1st day of the month.

Leaving only Month, Year

相关标签:
2条回答
  • 2021-01-01 16:11

    You can use following constructs to filter the Date column using either year or month:

    .filter(extract('year', Foo.Date) == 2012)
    .filter(extract('month', Foo.Date) == 12)
    

    And group_by is also possible:

    .group_by(sqlalchemy.func.year(Foo.Date), sqlalchemy.func.month(Foo.Date))
    

    Now I haven't tested it, but I assume that this might be slow because these queries result in full table scans, therefore I suggest you invest some time and learn how to use composite columns.

    0 讨论(0)
  • 2021-01-01 16:12

    if you declare your schema like this,

    schema.Column('created', types.TIMESTAMP(), default=now()),
    

    the function now() is defined in the same module which can be like this

    def now():
        now_date = datetime.datetime.now()
        return now_date.replace(day=1)
    

    as per group_by requirement, here is a method mentioned.

    you can modify hour and other field similarly.

    0 讨论(0)
提交回复
热议问题