2017-03-17 125 views
0

因此,從我的SQL查詢中收到:FRI DEC 13 1991 00:00:00 GMT + 0100(CET)作爲日期結果。但我想要的只是當前的用戶年齡。無論如何計算這個?或者是否有任何nom擴展我可以使用?謝謝你的時間。如何根據sql DATE數據類型計算用戶年齡

+0

您正在使用哪個數據庫?是日期類型的列嗎? – GurV

+0

@GurV這是一個SQL數據庫,類型是日期。 –

+0

您是否有能力控制返回該日期的查詢?另外,@GurV問你是否使用MySQL,Oracle,MS Sql ......? –

回答

0
SELECT DATEDIFF(day,'olddate','recentdate') AS AGE FROM your_table; 

返回的值是AGE。使用你有的任何日期格式,但這是你的問題的SQL查詢

0

您可以使用JavaScript Date對象是這樣的:

var sqlDate = new Date('FRI DEC 13 1991 00:00:00 GMT+0100 (CET)'); 
//log year 
console.log(sqlDate.getFullYear()); 
var intPersonYOB = sqlDate.getFullYear() 

做某事與year,創建一個新的Date對象,並獲得當年如下這樣你就可以做一些數學吧:

var currentDate = new Date(); 
var currentYear = currentDate.getFullYear(); 
var intPersonAge = currentYear - intPersonYOB; 
console.log(intPersonAge);` 

這應該是足夠的讓他的年齡

0

函數波紋管將返回您的字符串的年齡。你可以使用相同的方法。

ar str = 'FRI DEC 13 1991 00:00:00 GMT+0100 (CET)'; 

age = getAge(str); 

function getAge(str) { 
    var matches = str.match(/[a-z]{3} ([a-z]{3}) (\d{1,2}) (\d{4})/i); 
    str = matches[3] + '-'; 
    switch (matches[1]) { 
    case 'JAN': 
     str += '01-'; 
     break; 
    case 'FEB': 
     str += '02-'; 
     break; 
    case 'MAR': 
     str += '03-'; 
     break; 
    case 'APR': 
     str += '04-'; 
     break; 
    case 'MAY': 
     str += '05-'; 
     break; 
    case 'JUN': 
     str += '06-'; 
     break; 
    case 'JUL': 
     str += '07-'; 
     break; 
    case 'AUG': 
     str += '08-'; 
     break; 
    case 'SEP': 
     str += '09-'; 
     break; 
    case 'OCT': 
     str += '10-'; 
     break; 
    case 'NOV': 
     str += '11-'; 
     break; 
    case 'DEC': 
     str += '12-'; 
     break; 
    } 
    str += parseInt(matches[2]) < 10 ? '0' + matches[2] : matches[2]; 
    var birthDate = new Date(str); 
    var nowDate = new Date(); 
    return nowDate.getFullYear() - 1 - birthDate.getFullYear() + (
     birthDate.getMonth() < nowDate.getMonth() ? 1 : 
     birthDate.getMonth() == nowDate.getMonth() ? 
      birthDate.getDate() <= nowDate.getDate() ? 1 : 0 
     : 0 
    ); 
}