如何根据sql DATE数据类型计算用户年龄

时间:2017-03-17 16:43:21

标签: javascript sql date

所以从我的SQL查询中我收到:FRI DEC 13 1991 00:00:00 GMT + 0100(CET)作为日期结果。但我想要的只是当前几年的用户年龄。反正有计算吗?或者我可以使用任何nom扩展吗?谢谢你的时间。

3 个答案:

答案 0 :(得分: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);`

这应该足以让他的年龄

答案 1 :(得分:0)

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

返回的值是AGE。使用您拥有的任何日期格式,但这是您的问题的SQL查询

答案 2 :(得分:0)

函数bellow将按字符串返回age。您可以使用相同的方法。

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  
    );
}