Вот метод комбинирования счетчик с текущим временем, чтобы позволить вам иметь до 1000 отдельных транзакций в пределах одних и тех же ms, которые все однозначно пронумерованы, но все же значение времени.
И вот рабочий фрагмент для иллюстрации:
// this guarantees a unique time-based id
// as long as you don't have more than 1000
// requests in the same ms
var getTransactionID = (function() {
var lastTime, counter = 0;
return function() {
var now = Date.now();
if (now !== lastTime) {
lastTime = now;
counter = 0;
} else {
++counter;
}
return (now * 1000) + counter;
}
})();
for (var i = 0; i < 100; i++) {
document.write(getTransactionID() + "<br>");
}
Если вы хотите что-то, что, скорее всего, работать по кластерам, вы можете использовать process.hrtime()
использовать высокое разрешение таймера вместо счетчик, а затем сделать id строкой, которая может быть проанализирована в относительное время, если это необходимо. Поскольку это требует Node.js, я не могу сделать рабочий фрагмент кода здесь в браузере, но вот идея:
// this makes a unique time-based id
function getTransactionID() {
var now = Date.now();
var hrtime = process.hrtime();
return now + "." + ((hrtime[0] * 1e9) + hrtime[1]);
}
Почему бы не сохранить его как NOW() в запросе SQL вместо передачи его в качестве параметра , –
@BasvanStein Время для клиента браузера, является местным временем. он может захотеть сохранить это время. (хотя я думаю, что UTC следует сохранить), но он может захотеть использовать это конкретное время. –
Не меняя тип на строку или другой формат, вы не сможете этого сделать. Похож на поток дизайна здесь. –