Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Độ chính xác DATETIME của MySQL (joda-time, Hibernate, org.jadira.usertype, hbm2ddl)

Tôi đã tìm thấy một giải pháp khác cho phép không mã hóa đoạn mã định nghĩa cột MySQL trong @Column của bạn chú thích. Xác định phương ngữ ngủ đông của riêng bạn bằng cách ghi đè org.hibernate.dialect.MySQLDialect :

package org.yourproject;

import java.sql.Types;
import org.hibernate.dialect.MySQL5Dialect;

public class MySQL564PlusDialect extends MySQL5Dialect {
   public MySQL564PlusDialect() {
      super();
      registerColumnType( Types.TIMESTAMP, 6, "datetime($l)" );
   }
}

và chỉ định nó là thuộc tính ngủ đông hibernate.dialect=org.yourproject.MySQL564PlusDialect (phương ngữ bạn muốn mở rộng có thể khác nhau, ví dụ:org.hibernate.dialect.MySQL5InnoDBDialect thay vào đó).

Giờ đây, bạn có thể điều chỉnh độ chính xác của DATETIME của mình từ bên trong @Column chú thích bằng cách sử dụng length thuộc tính:

@Basic(optional=false)
@Column(name="moment", length=3)
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
public DateTime getMoment() {
 ...

sẽ tạo ra DATETIME(3) định nghĩa cột có nghĩa là độ chính xác mili giây. Nếu bạn cần DATETIME đơn giản (không có phân số giây), chỉ cần không chỉ định độ dài. Bạn có thể sử dụng giá trị của length lên đến 6, có nghĩa là độ chính xác đến từng micro giây.

Nếu bạn tình cờ sử dụng phương ngữ khác với phương ngữ ở trên (ví dụ:org.hibernate.dialect.MySQLDialect hoặc có thể một số cơ sở dữ liệu khác), điều đó sẽ không phá vỡ mã của bạn:length thuộc tính trên @Column sẽ bị bỏ qua.

P.S. Sẽ hợp lý hơn nếu khai thác precision thuộc tính của @Column thay vì length , nhưng đơn giản thay thế "datetime($l)" mẫu với "datetime($p)" một trong cách triển khai phương ngữ của riêng tôi không hoạt động thuận lợi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để hiển thị các bản ghi theo chiều dọc trong dòng lệnh mysql?

  2. Người theo dõi / cấu trúc cơ sở dữ liệu sau

  3. MySQL:Nhận dấu thời gian bắt đầu và kết thúc cho mỗi ngày

  4. Tham số biến / ràng buộc kết quả với các câu lệnh đã chuẩn bị

  5. hiển thị dữ liệu từ cơ sở dữ liệu vào bảng html