162 votes

MySQL convertit une chaîne de date en timestamp Unix

Comment convertir le format suivant en timestamp unix ?

Apr 15 2012 12:00AM

Le format que j'obtiens de la DB semble avoir AM à la fin. J'ai essayé d'utiliser ce qui suit mais cela n'a pas fonctionné :

CONVERT(DATETIME, Sales.SalesDate, 103) AS DTSALESDATE,  
CONVERT(TIMESTAMP, Sales.SalesDate, 103) AS TSSALESDATE

where Sales.SalesDate value is Apr 15 2012 12:00AM

1 votes

La date est-elle stockée sous forme de texte dans la base de données ?

1 votes

S'agit-il vraiment d'une question sur MySQL ? Votre syntaxe ne le suggère pas.

1 votes

Il semble que la question porte sur MSSQL.

261voto

Query Master Points 2606

Voici un exemple de la façon dont convertir DATETIME en horodatage UNIX :
SELECT UNIX_TIMESTAMP(STR_TO_DATE('Apr 15 2012 12:00AM', '%M %d %Y %h:%i%p'))

Voici un exemple de la façon dont changer le format de la date :
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(STR_TO_DATE('Apr 15 2012 12:00AM', '%M %d %Y %h:%i%p')),'%m-%d-%Y %h:%i:%p')

Documentation : UNIX_TIMESTAMP , FROM_UNIXTIME

1 votes

Merci. Cela fonctionne. Cela peut également être utilisé dans d'autres déclarations telles que update, delete, insert, etc.

1 votes

Après tant d'essais, votre solution a fonctionné pour moi : select * from (SELECT order_increment_id, FROM_UNIXTIME(UNIX_TIMESTAMP(STR_TO_DATE(order_date, '%d %M %Y %h:%i:%s %p')),'%Y-%m-%d') as order_date, email_sent FROM `packingslip_header` where email_sent=0) t where order_date >= '2019-11-13' ORDER BY order_increment_id ASC C'est la date que j'avais 31 Oct 2017 4:16:49 pm J'ai donc dû utiliser %d %M %Y %h:%i:%s %p para STR_TO_DATE

38voto

strnk Points 1093

Vous devrez certainement utiliser les deux STR_TO_DATE pour convertir votre date en un format de date standard MySQL, et UNIX_TIMESTAMP pour en obtenir l'horodatage.

Étant donné le format de votre date, quelque chose comme

UNIX_TIMESTAMP(STR_TO_DATE(Sales.SalesDate, '%M %e %Y %h:%i%p'))

Cela vous donnera un horodatage valide. Regardez le STR_TO_DATE pour obtenir plus d'informations sur la chaîne de format.

12voto

stackMonk Points 115

Pour la date du jour, il suffit d'utiliser UNIX_TIMESTAMP() dans votre requête MySQL.

5 votes

Ça ne répond pas à la question du message original.

0 votes

C'est pour les personnes qui ont besoin de convertir uniquement la date du jour dans leur requête, cela répond à une partie de la question, pas besoin de votre gatekeeping Evan, les gens ont upvoted la même chose pour montrer qu'ils ont besoin de cela.

0 votes

La question originale demandait de convertir un format spécifique ; ceci ne répond pas à cette question. J'annulerai le downvote si vous éditez pour clarifier cela.

-5voto

Brian Smith Points 1

Desde http://www.epochconverter.com/

SELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE())

My bad, SELECT unix_timestamp(time) Time format: YYYY-MM-DD HH:MM:SS or YYMMDD or YYYYMMDD. More on using timestamps with MySQL:

http://www.epochconverter.com/programming/mysql-from-unixtime.php

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X