【问题标题】:Comparing DOB's from different tables比较不同表的 DOB
【发布时间】:2014-02-28 06:12:29
【问题描述】:

所以我必须列出租户家庭中比租户本身年长的任何人的姓名。有两张桌子。租户和租户家庭。我尝试比较这两个日期,以查看tenant_family 表中的哪个 DOB 小于(意味着它们会更旧)租户表中的 DOB。

这是我到目前为止所拥有的,但它似乎是错误的。有人可以指导我找到正确输出的方法吗?

SELECT DISTINCT tenant_family.name
FROM TENANT_FAMILY, tenant
WHERE tenant_family.dob < tenant.TENANT_DOB;

【问题讨论】:

  • 你能添加一些示例数据和你期望得到的结果吗?有点难以理解你的目的。

标签: mysql sql oracle11g


【解决方案1】:

使用 DATE 函数提取查询的日期部分以进行比较,例如:

select distinct tenant_family.name from TENANT_FAMILY, tenant where DATE(tenant_family.dob) &lt; DATE(tenant.TENANT_DOB);

如果您的dobTENANT_DOB 未在数据库中存储为DATE 数据类型,或者它们存储为DATETIME,那么您可以使用该函数仅提取日期部分:

select distinct tenant_family.name from TENANT_FAMILY, tenant where date_format(tenant_family.dob,"%y-%m-%d") &lt; date_format(tenant.TENANT_DOB,"%y-%m-%d);

这应该会给你比较后的正确结果。

【讨论】:

  • 我刚试过这个,它给了我错误“缺少表达式”
  • 您使用的是 Oracle 11G 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多