Bạn cần phải có phiên bản MySQL 5.6.4 trở lên để khai báo các cột có kiểu dữ liệu thời gian phân đoạn thứ hai. Bạn không chắc mình có phiên bản đúng không? Hãy thử SELECT NOW(3)
. Nếu bạn gặp lỗi, bạn không có phiên bản phù hợp.
Ví dụ: DATETIME(3)
sẽ cho bạn độ phân giải milli giây trong dấu thời gian của bạn và TIMESTAMP(6)
sẽ cho bạn độ phân giải micro giây trên dấu thời gian * nix.
đọc này: http://dev.mysql.com/doc/refman/5.7/en/fractional-seconds.html
NOW(3)
sẽ cung cấp cho bạn thời điểm hiện tại từ hệ điều hành máy chủ MySQL của bạn với độ chính xác phần nghìn giây.
Nếu bạn có một số mili giây kể từ khi Unix epoch, hãy thử này để có được một DATETIME (3) giá trị
FROM_UNIXTIME(ms * 0.001)
Javascript timestamps, ví dụ, được trình bày trong mili giây kể từ khi Unix epoch.
(Chú ý rằng MySQL nội bộ số học phân đoạn, như * 0.001
, luôn luôn xử lý như IEEE754 độ chính xác gấp đôi dấu chấm động, do đó, nó không bạn sẽ bị mất độ chính xác trước khi mặt trời trở thành một sao lùn trắng.)
Nếu bạn' tái sử dụng một phiên bản cũ của MySQL và bạn cần độ chính xác thời gian thứ hai, con đường tốt nhất của bạn là nâng cấp. Bất cứ điều gì khác sẽ buộc bạn vào cách giải quyết lộn xộn.
Nếu vì một số lý do bạn không thể nâng cấp, bạn có thể xem xét sử dụng các cột BIGINT
hoặc DOUBLE
để lưu dấu thời gian Javascript như thể chúng là số. FROM_UNIXTIME(col * 0.001)
sẽ vẫn hoạt động OK. Nếu bạn cần thời gian hiện tại để lưu trữ trong cột như vậy, bạn có thể sử dụng UNIX_TIMESTAMP() * 1000
Nguồn
2014-10-10 12:23:21
Phiên bản nào của MySQL? – Strawberry
mysql Ver 14,14 Distrib 5.6.11, cho Win32 (x86) – Luixv
Có vẻ như bạn đang gặp may. – Strawberry