更新表并比较日期

时间:2014-02-20 17:04:36

标签: sql-server

我想用这句话来更新表格:

UPDATE PatientLedger 
SET DatedAs = (SELECT pp.ServiceDate
               FROM PatientLedger pl
               JOIN PatientProcedure pp ON pl.PatientProcedureID = pp.PatientProcedureID
               WHERE dateadd(dd, datediff(dd, 0, pl.DatedAs) + 0, 0) != 
dateadd(dd, datediff(dd, 0, pp.ServiceDate) + 0, 0))

但是我得到了一个例外

  

子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。

我的同事建议我使用这个查询(它有效!)

UPDATE pl 
SET DatedAs = pp.ServiceDate
FROM PatientLedger pl
JOIN PatientProcedure pp ON pl.PatientProcedureID = pp.PatientProcedureID
WHERE dateadd(dd, datediff(dd, 0, pl.DatedAs)+0, 0) != dateadd(dd, datediff(dd, 0, pp.ServiceDate)+0, 0)
请告诉我,有什么不同?我可以认为第二个查询每次都有一行,首先选择多行。

我还使用了下一个表达式来比较日期

CAST (pl.DatedAs AS date) !=  CAST (pp.ServiceDate AS date)

请告诉我们第一个表达和

之间的利弊
 dateadd(dd, datediff(dd, 0, pl.DatedAs)+0, 0) != 
    dateadd(dd, datediff(dd, 0, pp.ServiceDate)+0, 0)

0 个答案:

没有答案