从表格查询

时间:2015-05-29 10:58:24

标签: sqlite

 CREATE TABLE funcionario
  ( 
   idFuncionario    varchar2(5) not null,
   nome varchar2(50)    not null,
   remuneracao  varchar2(10)    not null,
   id   varchar2(5) not null,
   datanasc date    not null,
   morada   varchar(50) not null,
   tipoFuncionario varchar(20),
   idDepartamento   varchar2(5) REFERENCES departamento(idDepartamento),

   CONSTRAINT funcionario_pk PRIMARY KEY (idFuncionario)
 );

你好,我有这张桌子,我想找到每个客户(另一张桌子)的最早日期和年龄。 我试过这个:     从函数

中选择nome,remuneracao,max(dataNasc)

它实际上打印了最小日期,但我认为它是通过使用日期而不是年份来命令的。 对于我挣扎的年龄,我无法理解这一点。

有什么想法吗?

非常感谢您提前

有点问候

4 个答案:

答案 0 :(得分:0)

请在下面尝试查询;

// To find the oldest age by number of days
SELECT nome, remuneracao, MAX(DATEDIFF(NOW(), remuneracao)) AS max_age_in_days  FROM funcionario;

// To find the oldest age by number of years
SELECT nome, remuneracao, MAX(DATEDIFF(NOW(), remuneracao)/365)) AS max_age_in_years  FROM funcionario;

答案 1 :(得分:0)

这不太清楚 -

SELECT nome, remuneracao, max(dataNasc) from funcionario

似乎给你他们的名字,工资和最新(不是最早的)出生日期。

为初学者尝试MIN而不是MAX。例如

SELECT nome, remuneracao, min(dataNasc), datediff(year,min(dataNasc), getdate()) from funcionario

答案 2 :(得分:0)

最早的日期 - > MIN 日期

SELECT
    nome, id, min(datanasc), ((julianday('now') - julianday(datanasc))/365) as Age
FROM
    funcionario

DEMO

答案 3 :(得分:0)

好吧,我想出了如何找到最早/最早的日期和年龄。感谢所有试图提供帮助的人。对于那些可能有同样问题的人,快速解释/解决方案。

在SQLite函数中,如DATEDIFF和NOW()不存在,计算和操作日期信息应该使用date()(与现在具有相同的效果)。要使用生日(我上面的dataNasc字段)获取年龄,您可以简单地进行减法。 另外,为了工作并获得正确的最小或最大日期,您必须以YY-MM-DD格式编写日期。

希望这会有所帮助。

亲切的问候