【问题标题】:Removing timestamp from date using INNERJOIN in SQL Server在 SQL Server 中使用 INNER JOIN 从日期中删除时间戳
【发布时间】:2019-08-10 20:35:24
【问题描述】:

我在这里找到了很多东西,但没有任何帮助。我可以删除时间戳,但是当我使用INNER JOIN 时无法删除它。我尝试了很多东西,但它不起作用。

这就是我想要做的:

SELECT 
    CAST(CURRENT_TIMESTAMP as DATE) "END_DATE", LO_ID 
FROM 
    dbo.LO as L 
INNER JOIN 
    dbo.IL as I ON L.LO_ID = I.LO_ID
INNER JOIN 
    dbo.PO as P ON P.LO_ID = I.LO_ID
INNER JOIN 
    dbo.CO as C ON P.CO_ID = C.ID 
WHERE 
    P.LO = 7

我在 LO_ID 处收到错误。使用 INNER JOIN 时如何删除时间戳?

我也尝试过CONVERT 方法而不是CAST

PS:这是我想要得到的结果:

SELECT * FROM loan.LOANS as L 
INNER JOIN insurance.INSURANCES as I ON L.LOAN_ID = I.LOAN_ID 
INNER JOIN insurance.POLICIES as P ON P.LOAN_ID = I.LOAN_ID 
INNER JOIN insurance.COMPANIES as C ON P.COMPANY_ID = C.ID WHERE P.LOAN_ID = 7

这很好用,这是我所期望的,但总的来说 Date 有一个时间戳,我只想删除那个时间戳

【问题讨论】:

  • 您没有在选择字段中指定您想要的表的 LO_ID。
  • @brithwulf 不清楚您假装要实现什么,您应该提供 LOANS 和 INSURANCE 中的数据样本,并说明您希望从该数据中获得什么结果。

标签: sql-server database timestamp inner-join


【解决方案1】:

这个查询有什么问题?

SELECT CONVERT(date, [L.END_DATE]) as LOAN_END_DATE, 
       CONVERT(date, [I.END_DATE]) as INSURANCE_END_DATE, 
       L.LOAN_ID 
FROM loan.LOANS as L 
     INNER JOIN insurance.INSURANCES as I ON L.LOAN_ID = I.LOAN_ID 
     INNER JOIN insurance.POLICIES as P ON P.LOAN_ID = I.LOAN_ID 
     INNER JOIN insurance.COMPANIES as C ON P.COMPANY_ID = C.ID WHERE P.LOAN_ID = 7

您应该能够使用 convert 函数删除每个返回字段的时间部分。返回的字段来自主表还是连接表都没有关系。

【讨论】:

  • 不明确的列名'END_DATE',这是我得到的错误。
  • 那么你在多个表中有 END_DATE 列,你需要使用它们的别名来区分它们。我已更新答案以显示带有别名的 END_DATE。
猜你喜欢
  • 1970-01-01
  • 2010-10-21
  • 2013-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-25
相关资源
最近更新 更多