Je planifie une application PHP qui a besoin de stocker la date et l'heure dans une base de données MSSQL. (Pour les curieux, c'est une application de calendrier.) Quel est le format préféré pour stocker cette information? MSSQL a son propre type de données datetime, qui fonctionne bien dans la base de données elle-même et est très lisible. Cependant, il n'y a pas de fonctions MSSQL pour traduire les valeurs datetime au format préféré de PHP - Timestamp UNIX. Cela rend un peu plus pénible à utiliser avec PHP. L'horodatage UNIX est attrayant parce que c'est ce que PHP aime, mais ce n'est certainement pas aussi lisible et il n'y a pas beaucoup de fonctions MSSQL intégrées pour travailler avec les données. Voulez-vous stocker ces informations en tant que type de données datetime, en tant qu'horodates UNIX (int, bigint ou varchar datatype), en tant que deux formats côte à côte ou en tant que tout autre élément?Quel est le format préféré pour stocker la date et l'heure dans une base de données SQL Server lorsque PHP est votre langue principale?
Répondre
Je stockerais les dates dans le format MS-SQL pour aider à utiliser pleinement les fonctions de manipulation de date dans T-SQL. Il est plus facile d'écrire et de lire
SELECT * FROM Foo
WHERE DateDiff(d,field1,now()) < 1
que d'essayer de réaliser l'opération équivalente en manoeuvrant entiers
Pour convertir une date MSSQL dans une utilisation d'horodatage unix DATEDIFF:
SELECT DATEDIFF(s,'1970-01-01 00:00:00',fieldName) as fieldNameTS
FROM TableName
WHERE fieldName between '10/1/2008' and '10/31/2008'
Pour convertir un Un horodatage Unix dans une date MsSQL, vous pouvez soit le faire en PHP:
$msSQLDate = date("Y-m-d H:i:s", $unixDate);
ou MsSQL
INSERT INTO TableName (
fieldName
) VALUES (
DATEADD(s,'1970-01-01 00:00:00', ?)
)
Où paramètre on est int ($ unixDate)
Je recommande la même chose que je fais pour toutes les dates dans tous les moteurs de base de données, le type natif db. (DATETIME)
utiliser juste "AAAA-MM-JJ HH: MM: SS" pour insérer en php: date('Y-m-d H:i:s', $myTimeStampInSeconds);
-edit en réponse aux commentaires ci-dessous ici -
- pour les colonnes sélectionnées vous peut utiliser
$timestamp = strtotime ($yourColumnValue);
- je recommande de conserver dans le format natif databas parce que vous pouvez ensuite utiliser SQL pour comparer les enregistrements à l'aide des fonctions de date/heure SQL comme DATEADD(), etc.
L'insertion est facile, c'est l'utilisation des données après la sélection qui est plus gênant. –
En outre, vous recommandez de le stocker de cette façon, mais pouvez-vous développer pourquoi vous le recommandez? –
Joe Lencioni C'est plus rapide parce que c'est juste des nombres, les comparaisons sont numériques, et il n'y a aucun moyen qu'une date ultérieure d'une valeur inférieure à une précédente. Il est standardisé (ISO8601) et il n'est pas compliqué d'apporter n'importe quel type de date à ce format de chaîne (et sa conversion en entier). Alors que dans le type Date, le programme fonctionne pour convertir et faire des comparaisons – manhattan
Bonjour et bonne journée pour tout le monde
Oui, peut-être des thats la meilleure façon, les dates de magasin dans db, ils seront prendre le format db et vous pouvez formater quand vous avez besoin que vous Wich
Mais il y a une autre solution une dans le format international ISO-développé, je veux dire ISO 8601.
Le format international défini par ISO (ISO 8601) tente de résoudre tous les problèmes de date en définissant un système de date numérique comme suit: AAAA-MM-JJ où
YYYY est l'année [tous les chiffres, c.-à-d.2100] MM est le mois [01 (Janvier) à 12 (Décembre)] DD est le jour [01 à 31] selon les papillons de nuit: P
Utilisation de dates numériques n'ont aussi quelques écueils en matière de lisibilité et la convivialité n'est pas parfaite.Mais le format de date ISO est, cependant, le meilleur choix pour une représentation de date qui soit universellement (et précisément) compréhensible.
Notez que ce format peut également être utilisé pour représenter la date et l'heure précise, avec des informations de fuseau horaire
Voici une information détaillée sur ISO 8601: 2000
Sans plus .. Bye bye
La chose que je n'aime pas dans les formats de date ISO-8601 est le "T" entre la partie date et la partie temps. Mais la bonne partie est que datetimes dans ce format trient bien comme des chaînes simples. – bart
- 1. Quel est votre plugin préféré dans Emacs?
- 2. Quel est votre outil préféré pour l'analyse d'impact?
- 3. Quel est votre outil de débogage open source préféré?
- 4. Quel est le format de données de vertex préféré pour OpenGL ES sur iPhone OS?
- 5. Modifier le format d'heure date par défaut dans une base de données unique dans SQL Server
- 6. Quel est votre dispositif de feedback extrême préféré?
- 7. comment stocker une date dans une base de données mysql?
- 8. Pourquoi le format de date (en fait la langue) est différent dans deux pages aspx
- 9. Quel format de date est "ds1248083197360"?
- 10. Quel est le meilleur format pour stocker le type de contact/adresse d'information sans base de données?
- 11. Vous vous connectez à votre base de données, où vous vous connectez lorsque votre base de données est en panne?
- 12. Quel est le moyen préféré pour retourner une table vide dans SQL?
- 13. Quel est le SQL Server équivalent à la base de données privée virtuelle d'Oracle?
- 14. Quelle est la spécification du format de date hexadécimale dans le serveur SQL?
- 15. Quel est l'équivalent SQL Server de INET_ATON
- 16. Flash: Quel est le format de données SWX?
- 17. Quelle est la meilleure façon de stocker des données d'historique dans SQL Server 2005/2008?
- 18. Analyse de texte PHP et/ou faire votre propre langue?
- 19. Copier la base de données SQL Server dans le code
- 20. Préparer la base de données pour le clustering SQL Server
- 21. Données de langue japonais/chinois dans la table SQL Server
- 22. Quel est votre système de suivi des bogues/problèmes préféré? Et pourquoi?
- 23. Quel est le format de AdminSettings.php
- 24. Comment lire le format date + heure préféré de l'utilisateur?
- 25. Est-il possible d'utiliser PHP pour sauvegarder SQL sans dépendances? Si non, quel est le meilleur?
- 26. Pour changer le format de la date en sql
- 27. Comment puis-je stocker une date dans une base de données MySQL en utilisant PHP?
- 28. Comment obtenir SQL Server Date dans son format natif?
- 29. php stocker dans la base de données tamil php mysql
- 30. Quel format de sérialisation pour les paires clé/valeur est le mieux indexable dans SGBDR?
PHP 5.2.0 publié le 2 novembre 2006 (deux ans avant cette question) a introduit la classe DateTime. Ceci (et ses classes et dérivés) est maintenant comment vous devez manipuler les dates et les heures en PHP. Considérez si votre anniversaire est avant 1970. Comment pouvez-vous stocker cela comme un horodatage Unix? Vous devez également savoir que _this_entier_entier n'est pas un entier normal, mais représente un horodatage Unix. Utilisez un cours qui dit ce que c'est. –