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

Các trường dấu thời gian trong django

Thực sự đã có một bài báo rất hay và nhiều thông tin về điều này. Tại đây: http://ianrolfe.livejournal.com/36017.html

Giải pháp trên trang này hơi không được dùng nữa, vì vậy tôi đã làm như sau:

from django.db import models
from datetime import datetime
from time import strftime

class UnixTimestampField(models.DateTimeField):
    """UnixTimestampField: creates a DateTimeField that is represented on the
    database as a TIMESTAMP field rather than the usual DATETIME field.
    """
    def __init__(self, null=False, blank=False, **kwargs):
        super(UnixTimestampField, self).__init__(**kwargs)
        # default for TIMESTAMP is NOT NULL unlike most fields, so we have to
        # cheat a little:
        self.blank, self.isnull = blank, null
        self.null = True # To prevent the framework from shoving in "not null".

    def db_type(self, connection):
        typ=['TIMESTAMP']
        # See above!
        if self.isnull:
            typ += ['NULL']
        if self.auto_created:
            typ += ['default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP']
        return ' '.join(typ)

    def to_python(self, value):
        if isinstance(value, int):
            return datetime.fromtimestamp(value)
        else:
            return models.DateTimeField.to_python(self, value)

    def get_db_prep_value(self, value, connection, prepared=False):
        if value==None:
            return None
        # Use '%Y%m%d%H%M%S' for MySQL < 4.1
        return strftime('%Y-%m-%d %H:%M:%S',value.timetuple())

Để sử dụng nó, tất cả những gì bạn phải làm là:timestamp = UnixTimestampField(auto_created=True)

Trong MySQL, cột sẽ xuất hiện dưới dạng:dấu thời gian 'timestamp' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

Hạn chế duy nhất của điều này là nó chỉ hoạt động trên cơ sở dữ liệu MySQL. Nhưng bạn có thể dễ dàng sửa đổi nó cho người khác.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysqldump:Đã ghi được errno 32

  2. Cập nhật MySQL cột đơn hàng?

  3. Cách sử dụng các vai trò đã thay đổi trong MySQL 8.0

  4. MySQL> Bảng không tồn tại. Nhưng nó có (hoặc nó phải)

  5. MySQL giải thích sự hiểu biết về truy vấn