2016-07-17 4 views
1

Я использую mysqljs и после того, как результат получить от sql я получить другой формат TimeStamp как с этим:Nodejs MySQL получить правильный формат TimeStamp

created_at: Sat Jul 16 2016 23:52:54 GMT+0430 (IRDT) 

но на MySQL является:

2016-07-16 23:52:54 

и я хочу получить это, а не в другом формате, как я могу установить этот формат в mysql-соединении или в sql-команде?

var connection = mysql.createConnection({ 
    host: 'localhost', 
    user: 'root', 
    password: 'a', 
    database: 'signal' 
}); 

connection.query(command, function (err, rows) { 
    if (err) throw err; 
    console.log(rows); 
}); 

ответ

3

Я бы рекомендовал обрабатывать строки вместо того, чтобы пытаться изменить результат вывода MySQL. Таким образом, ваша база данных будет иметь подробные полные данные о created_date. Хотя клиенты (другие функции, системы, проекты и т. Д.) Будут форматировать значение, полученное из БД, в любой формат, в котором они нуждаются. Кроме того, вы сохраните согласованные результаты возврата для дат через вашу систему. Независимо от того, какой запрос БД выполняется, ваше программное обеспечение всегда будет ожидать возвращения того же формата.

Вот пример в ES6, также использующий библиотеку moment.js, чтобы упростить любые операции с датой, которые у вас есть, настоятельно рекомендую использовать эту библиотеку.

const connection = mysql.createConnection({ 
    host: 'localhost', 
    user: 'root', 
    password: 'a', 
    database: 'signal' 
}); 

function formatDate(date) { 
    return moment(date).format('YYYY-MM-DD HH:mm:ss'); 
} 

connection.query(command, (err, rows) => { 
    if (err) { 
     throw err; 
    } 

    rows = rows.map(row => ({ 
     ...row, 
     created_date: formatDate(row.created_date) 
    })); 

    console.log(rows); 
}); 

обновление или в ES5

var connection = mysql.createConnection({ 
    host: 'localhost', 
    user: 'root', 
    password: 'a', 
    database: 'signal' 
}); 

function formatDate(date) { 
    return moment(date).format('YYYY-MM-DD HH:mm:ss'); 
} 

connection.query(command, function(err, rows) { 
    if (err) { 
     throw err; 
    } 

    rows = rows.map(function(row) { 
     return Object.assign({}, row, { created_date: formatDate(row.created_date) }); 
    }); 

    console.log(rows); 
}); 
+0

Спасибо, но whats '... row,'? вы можете заполнить этот раздел? –

+0

Я обновил, чтобы добавить образец ES5 слишком – anvk

+0

Спасибо, почему я получаю '[]'? , Проблема заключается в 'Недопустимое количество аргументов, ожидаемых 0..1' для этой части вашего кода' {}, row, {create_date: formatDate (row.create_date)} ' –

0

Это будет звучать невероятно, но это достаточно, чтобы назвать '.ToString() на временной метки строки. Это даст доступный для человека вывод

Смежные вопросы