sql >> Databáze >  >> RDS >> Mysql

Pole časového razítka v django

Byl o tom vlastně velmi dobrý a poučný článek. Zde:http://ianrolfe.livejournal.com/36017.html

Řešení na stránce je mírně zastaralé, proto jsem provedl následující:

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

Chcete-li jej použít, vše, co musíte udělat, je:timestamp = UnixTimestampField(auto_created=True)

V MySQL by měl sloupec vypadat jako:'timestamp' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

Jedinou nevýhodou je, že funguje pouze na databázích MySQL. Můžete jej však snadno upravit pro ostatní.



  1. PHP PDO jak spustit požadavek na více dotazů?

  2. Jak zaokrouhlit číslo na nejbližší celé číslo v SQL

  3. Najděte poškozené objekty na serveru SQL Server

  4. Nejlepší způsob uložení uživatelských nastavení v MySQL?