Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Pola znaczników czasu w django

Był na ten temat bardzo dobry i pouczający artykuł. Tutaj:http://ianrolfe.livejournal.com/36017.html

Rozwiązanie na stronie jest nieco przestarzałe, więc wykonałem następujące czynności:

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())

Aby z niego skorzystać, wszystko, co musisz zrobić, to:timestamp = UnixTimestampField(auto_created=True)

W MySQL kolumna powinna wyglądać tak:'timestamp' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

Jedyną wadą tego jest to, że działa tylko na bazach danych MySQL. Ale możesz go łatwo modyfikować dla innych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wydajny model danych dla zapytań o zakres

  2. MySQL Connector dołącza wyliczenie z wartością o jeden mniejszą niż rzeczywista

  3. JSON_ARRAY_INSERT() – Wstaw wartości do tablicy JSON w MySQL

  4. MySQL Alter Table Dodaj pole przed lub po już istniejącym polu

  5. PHP 7 nie może znaleźć MySQLi