2010-06-18 6 views
0

je veux convertir datetime.now() aux tiques, comme est le temps est 16h00 le 18 juin 2010, je veux que ce soit 20100618160000, ou d'un nombre complexe comme celui-ci . Je veux utiliser ce numéro et un autre champ dans ma base de données comme combinaison de touches primaires pour récupérer des données. J'utilise PHP et MySQL donc ce serait très utile si quelqu'un pouvait m'envoyer du code pour la même chose. Merci.datetime converti à timeticks en php et mysql

SJ

Répondre

0

Je souhaite utiliser ce numéro et un autre champ de ma base de données comme combinaison de touches primaires pour extraire des données.

Probablement pas une bonne idée. Il y a la possibilité théorique d'une collision lorsque deux instances de votre script sont appelées exactement au même moment. Vous devez combiner ceci avec une autre valeur unique pour créer une clé primaire sûre.

Mais pour répondre à votre question, microtime(true) vous donnera l'horodatage en cours avec microsecondes comme un long numéro. strtotime() traduira à propos de n'importe quel temps au format américain en un horodatage.

+0

Vous arrêtez cette collision en ayant la valeur datetime soumise par la base de données, pas l'application. IE: l'utilisation de NOW()/CURRENT_TIMESTAMP pour remplir la valeur est correcte. –

+0

@OMG mais ça ne marche que si vous verrouillez la table avant d'insérer l'enregistrement, n'est-ce pas? Ou mySQL est-il assez intelligent pour ajouter quelque chose au second horodatage en cas de collision? Après tout, nous parlons de deux instances de script avec deux connexions de bases de données différentes ici. –

+0

@Pekka: les opérations dans une base de données sont mises en file d'attente. Il y a un peu de déblayage quand vous traitez des niveaux d'isolation, mais sinon les inserts sont séquentiels. –

-1

Vous pouvez utiliser number_format (($ temps * 10000000) + 621355968000000000, 0,, ​​'' ''); où $ time représente la valeur de l'horodatage unix.