Je veux convertir un timestamp
MySQL en date.
Je souhaite formater le champ user.registration dans le fichier texte en tant que fichier yyyy-mm-dd
.
Voici mon SQL:
$sql = requestSQL("SELECT user.email,
info.name,
FROM_UNIXTIME(user.registration),
info.news
FROM user, info
WHERE user.id = info.id ", "export members");
J'ai également essayé la conversion de date avec:
DATE_FORMAT(user.registration, '%d/%m/%Y')
DATE(user.registration)
Je fais écho au résultat avant d'écrire le fichier texte et j'obtiens:
email1; nom1; DATE_FORMAT (user.registration, '% d /% m /% Y'); news1
email2; nom2; news2
Comment puis-je convertir ce champ à ce jour?
mysql
sql
date-formatting
remyremy
la source
la source
Réponses:
la source
users
.user_created_at
), '% Y-% b-% e') = '2015-03-06' est ce format correct ou dois-je le modifier?'%Y-%m-%d'
comme vous le formateriez en PHP(date('Y-m-d',$row->user_created_at))
- cela (les deux variantes, SQL et PHP) apparaît comme 2018-11-06Convertir l'horodatage en date dans MYSQL
Créez la table avec un horodatage entier:
mysql> create table foo(id INT, mytimestamp INT(11)); Query OK, 0 rows affected (0.02 sec)
Insérez quelques valeurs
mysql> insert into foo values(1, 1381262848); Query OK, 1 row affected (0.01 sec)
Regarde
mysql> select * from foo; +------+-------------+ | id | mytimestamp | +------+-------------+ | 1 | 1381262848 | +------+-------------+ 1 row in set (0.00 sec)
Convertissez le nombre en horodatage:
mysql> select id, from_unixtime(mytimestamp) from foo; +------+----------------------------+ | id | from_unixtime(mytimestamp) | +------+----------------------------+ | 1 | 2013-10-08 16:07:28 | +------+----------------------------+ 1 row in set (0.00 sec)
Convertissez-le dans un format lisible:
mysql> select id, from_unixtime(mytimestamp, '%Y %D %M %H:%i:%s') from foo; +------+-------------------------------------------------+ | id | from_unixtime(mytimestamp, '%Y %D %M %H:%i:%s') | +------+-------------------------------------------------+ | 1 | 2013 8th October 04:07:28 | +------+-------------------------------------------------+ 1 row in set (0.00 sec)
la source
Pour juste avoir une date, tu peux le
cast
faireet pour obtenir une utilisation de format spécifique
date_format
Démo SQLFiddle
la source
Si le
registration
champ est effectivement de type,TIMESTAMP
vous devriez pouvoir simplement faire:$sql = "SELECT user.email, info.name, DATE(user.registration), info.news FROM user, info WHERE user.id = info.id ";
et l'enregistrement doit être affiché sous la forme aaaa-mm-jj
la source
Utilisez simplement la fonction DATE de mysql:
mysql> select DATE(mytimestamp) from foo;
la source
SELECT DATE(UNIX_TIMESTAMP())
cracheNULL
dans mon MySQL 5.7.14Vous devriez vous convertir
timestamp
endate
.select FROM_UNIXTIME(user.registration, '%Y-%m-%d %H:%i:%s') AS 'date_formatted'
FROM_UNIXTIME
la source
FROM_UNIXTIME(unix_timestamp, [format])
c'est tout ce dont tu as besoinFROM_UNIXTIME
obtient une valeur numérique et la transforme enDATE
objet,ou si une chaîne de format est donnée, elle la renvoie sous forme de chaîne.
L'ancienne solution consistait à obtenir l'objet de date initial et à le formater avec une deuxième fonction
DATE_FORMAT
... mais ce n'est plus nécessairela source
Si vous obtenez la requête dans votre sortie, vous devez nous montrer le code qui fait réellement écho au résultat. Pouvez-vous publier le code qui appelle requeteSQL?
Par exemple, si vous avez utilisé des guillemets simples en php, il affichera le nom de la variable, pas la valeur
Cela ressemble exactement à votre problème et je suis convaincu que c'est la cause.
Essayez également de supprimer le symbole @ pour voir si cela vous aide en vous donnant plus d'informations.
pour que
devient
Cela arrêtera toute suppression d'erreur si la requête génère une erreur.
la source
Je l'ai fait avec la fonction `` date '' comme décrit ici :
(SELECT count(*) as the-counts,(date(timestamp)) as the-timestamps FROM `user_data` WHERE 1 group BY the-timestamps)
la source
Essayer:
SELECT strftime("%Y-%d-%m", col_name, 'unixepoch') AS col_name
Il formatera l'horodatage en millisecondes en chaîne aaaa-mm-jj.
la source