比较sql server中的两个日期列

vof42yt1  于 2021-07-29  发布在  Java
关注(0)|答案(2)|浏览(486)

我想要一个问题的答案,告诉我所有的行在哪里 Est. Arrive 发生在 Est. Ready . (i、 e.在我们准备接收之前,包裹就出现了)。
我的查询显示了太多不正确的结果(显示5行而不是1行)。
两个日期列都是 yyyy-mm-dd hh:mm:ss ( datetime )我把它们改成只约会。使用SQLServerManagementStudio。

  1. Select Est. Arrive=convert(date,ETA_Arrive), Est. Ready=convert(date,ETA_Ready)
  2. from table
  3. WHERE ETA_Arrive < ETA Ready
  4. Row # Est. Arrive Est. Ready
  5. 1 2020-07-13 2020-07-16
  6. 2 2020-07-26 2020-07-16
  7. 3 2020-07-28 2020-07-16
  8. 4 2020-08-03 2020-07-16
  9. 5 2020-07-22 2020-07-16

我希望第1行是唯一返回的行:

  1. Row # Est. Arrive Est. Ready
  2. 1 2020-07-13 2020-07-16
ht4b089n

ht4b089n1#

如果您希望所有到达的行都在准备就绪之前就可以使用 < 在你的询问中,不是 > (或者交换你的准备好的,然后到达,但保留 > )
你写道:

  1. WHERE ETA_Arrive > ETA Ready

撇开语法错误不谈,逻辑上这意味着“where arrive is after ready”。把它转过来

lpwwtiir

lpwwtiir2#

由于别名定义不正确,查询将出现错误。检查我下面的问题。另一个错误是eta\u ready有一个空格。请尝试显示一些努力生成伪代码之前张贴不完整的答案。

  1. WITH tbl(id,eta_arrive,eta_ready)
  2. AS
  3. (SELECT 1 , '2020-07-13' , '2020-07-16' UNION
  4. SELECT 2 , '2020-07-26' , '2020-07-16' UNION
  5. SELECT 3 , '2020-07-28' , '2020-07-16' UNION
  6. SELECT 4 , '2020-08-03' , '2020-07-16' UNION
  7. SELECT 5 , '2020-07-22' , '2020-07-16')
  8. Select
  9. [Est. Arrive] = convert(date,ETA_Arrive),
  10. [Est. Ready] =convert(date,ETA_Ready)
  11. FROM tbl
  12. WHERE ETA_Arrive < ETA_Ready
  13. Est. Arrive Est. Ready
  14. 2020-07-13 2020-07-16
展开查看全部

相关问题