如何在 DateTime 字段上查询 DAY_ONLY?

How to do a query of DAY_ONLY on a DateTime field?

我有一个这样的实体

import { Field, ObjectType } from "type-graphql";
import {
  BaseEntity,
  Column,
  CreateDateColumn,
  Entity,
  ManyToOne,
  OneToMany,
  PrimaryGeneratedColumn,
} from "typeorm";
import { Brand } from "./Brand";
import { Price } from "./Price";
import { UserComment } from "./UserComment";

@ObjectType()
@Entity()
export class Product extends BaseEntity {
  @Field()
  @PrimaryGeneratedColumn()
  id!: number;

  //...

  @Field()
  @CreateDateColumn()
  createdAt: Date;
}

在postgresql数据库中,createdAt是这样存储的

2022-04-06 18:13:18.141658

例如,我想获取今天的所有产品,我该怎么做?

在 postgreSQL 中,我们可以通过添加 ::date.
后缀来转换为日期 这里 createdAt 是数据类型 timestamp.
本文更深入地探讨了该主题 https://wanago.io/2021/03/15/postgresql-typeorm-date-time/

select
  createdAt AsDateTime,
  createdAt::date AsDate
from myTable;
asdatetime          | asdate    
:------------------ | :---------
2022-02-01 10:11:15 | 2022-02-01

db<>fiddle here

也许你可以试试 CAST(createdAt AS DATE) as create_at_date

或者如果您想进一步分解它,您可以使用

Date_Part('year', createdat) as Year
Date_part('month', createdat) as month
Date_part('day', createdDate) as day

如果您想计算季度销售额或月度销售额,请使用此选项。