2016-07-13 2 views
0

Я использую MySQL 5.7.13 с sails 0.12.3 и sails-mysql 0.12.2. Я хочу, чтобы вставить новую запись с timestamp поле, которое, в beforeCreate для этой модели, журналы, как значение для поля следующим образом:Не получается миллисекунды в MySQL при вставке из Sails

2016-07-13T16: 37: 21.529Z

Определение поля для модели - это тип datetime. Кажется, что поле находится в правильном формате (ISO), но когда я проверяю запись непосредственно из командной строки mysql, я получаю всегда 000 в части миллисекунд, например.

2016-07-13T16: 37: 21,000

После проверки и поиска, я не могу найти, где проблема. Любая подсказка?

ответ

0

Похоже, что дробные секунды не поддерживаются sails-mysql.

кода, чтобы создать datetime поля (here) не объявлять дробные секунды (так MySQL defaults to 0), и код для преобразования Date экземпляра в SQL (here) имеет только 1-второе разрешение.

Кто-то attempted to add fractional second support некоторое время назад, но этот PR закрылся, и он не выглядит чем-то подобным, когда-либо сливающимся.

+0

Как указывает @robertklep, нет другого способа изменить некоторые файлы в модуле 'sails-mysql'. Могут быть изменены: 'lib/sql.js' и' lib/utils.js'. Там 'DATETIME' заменяется на функции DATETIME (3)' и 'toSqlDate()' следующим образом: 'date = date.getFullYear() + '-' + ('00' + (date.getMonth (+) + '' + ('00' + date.getHours()) .slice (-2) + ':' + ('00' + date.getMinutes()). slice (-2) + ':' + ('00' + date.getSeconds()). slice (-2) + '.' + ('00' + date.getMilliseconds()). Slice (-2); ' – Pendrag

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