【问题标题】:SQL How to display data before a certain dateSQL如何显示某个日期之前的数据
【发布时间】:2013-03-17 01:32:26
【问题描述】:

我有几张桌子。一个是worker 表,它显示worker 代码、名字和姓氏。 工作日期,显示工人代码、工作开始日期、结束日期和工作区域代码。 主管有工人编号、名字、姓氏和工作区号。 工作区域有工作区域代码名称和主管。

我要做的是在 2010 年 10 月 9 日之前显示工人代码 由于我是新手,所以在制作数据库之前,我会尝试先将所有内容都写下来并进行理论分析。

这听起来对吗?我不太确定日期的事情。

select worker
From Job Dates
where job start < '10/09/10'

理论上这听起来对我来说是正确的,但它是否需要以某种方式告诉查询它是一个日期戳?

如果工人在 2010 年 10 月 9 日之前开始工作,我想查找工人的姓氏和主管的姓氏?我猜这将是一个 JOIN?

谢谢

【问题讨论】:

  • 你需要清理你的 sql,但是如果 job_start 是一个 datetime 列,你所拥有的将起作用。如果没有您的表结构,真的帮不上什么忙。祝你好运。
  • job_start 列将显示为:10/09/10 与 job_end 相同。谢谢
  • 您需要显示表架构的关键部分。列名通常不包含空格;当它们这样做时,它们必须包含在分隔符中。 DATE 文字的格式正式为 DATE '2010-09-10',但不同的 DBMS 有其他也可以使用的表示法。您也应该指定您正在使用的 DBMS。

标签: sql date


【解决方案1】:

你在正确的轨道上。在不知道数据库架构的情况下,您的最终查询将如下所示:

select w.surname, s.surname
From worker w INNER JOIN JobDatesTable jdt on w.id = jdt.id
              INNER JOIN SuperVisor s on w.id = s.id
where jdt.jobstart < '20101009'

【讨论】:

  • 基本上这就是我的架构最终的样子。 i47.tinypic.com/197fw8.jpg
  • 谢谢杰克。只是想知道是否有任何理由工人没有像 JobsDate 那样支持它?我的最后一行应该根据我的模式阅读?其中 jdt.jobstart
猜你喜欢
  • 1970-01-01
  • 2018-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 2016-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多