2015-05-29 76 views
-2
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) 
); 

你好,我有這張表,我想從每個客戶端(另一張桌子)找到最早的日期和年齡。 我已經試過這樣: 選擇諾姆,remuneracao,MAX(dataNasc)從funcionario選擇年齡和表查詢的最早日期

,它實際上打印分鐘的日期,但我認爲它通過使用一天,而不是一年下令它。 對於我掙扎的年齡,我無法真正瞭解這一點。

任何想法?

非常感謝你提前

有點兒認爲

+0

你可以添加另一個表結構也是你的查詢獲取最短日期。 – Anil

+1

'varchar2'否定的,甚至沒有讀取'sql-server'標籤:* Microsoft SQL Server是一個關係數據庫管理系統。對所有SQL Server版本使用此標記,包括Compact,Express,Azure,Fast-track和PDW。不要將此標籤用於其他類型的DBMS(MySQL,PostgreSQL等)。* –

回答

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; 
+0

它說沒有這樣的功能:NOW – Perseverance

+0

您可以讓我知道您使用MySQL或MS SQL或SQL Lite的數據庫嗎?也可以嘗試** CURDATE()**而不是 – rcadhikari

0

這是沒有太清楚 -

SELECT nome, remuneracao, max(dataNasc) from funcionario 

出現給你他們的名字,薪水和出生最新的(未最早的)日期。

嘗試MIN而不是MAX作爲初學者。例如

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

的最早日期 - >MIN日期

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

DEMO

+0

它表示NOW函數不存在。我正在使用數據庫瀏覽器 – Perseverance

+0

已更新(SQLite)。這應該很好。 – KM11

0

好吧,我想出如何找到的最早/最古老的日期和年齡。感謝所有想要幫助的人。對於那些可能有同樣問題的人,快速解釋一下。

在DATEDIFF和NOW()等SQLite函數中不存在,要計算和操作日期信息,您應該使用date()(與現在具有相同的效果)。要使用生日(我的dataNasc字段在上面)獲得年齡,可以簡單地進行減法。 另外,爲了工作並獲得正確的最小或最大日期,您必須以YY-MM-DD格式編寫日期。

希望這會有所幫助。

親切的問候