MySQL convertit la chaîne de date en horodatage Unix

137

Comment convertir le format suivant en horodatage Unix?

Apr 15 2012 12:00AM

Le format que j'obtiens de 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
codeur rouge
la source
1
La date est-elle stockée sous forme de texte dans la base de données?
strnk le
1
Est-ce vraiment une question MySQL? Votre syntaxe ne le suggère pas.
Álvaro González
1
Semble quelle est la question sur MSSQL.
Fedir RYKHTIK

Réponses:

224

Essayez cette requête pour CONVERT DATETIME to UNIX TIME STAMP

SELECT UNIX_TIMESTAMP(STR_TO_DATE('Apr 15 2012 12:00AM', '%M %d %Y %h:%i%p'))

Cette requête pour CHANGE DATE FORMATE

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')
Maître des requêtes
la source
1
Merci .Cela fonctionne.Cela peut également être utilisé dans d'autres déclarations telles que la mise à jour, la suppression, l'insertion, etc.
MR_AMDEV
1
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 ASCc'est la date que j'avais 31 Oct 2017 4:16:49 pmdonc je devais utiliser %d %M %Y %h:%i:%s %ppourSTR_TO_DATE
Damodar Bashyal
35

Vous devrez certainement utiliser à la fois STR_TO_DATEpour convertir votre date dans un format de date standard MySQL et UNIX_TIMESTAMPpour en obtenir l'horodatage.

Compte tenu du format de votre date, quelque chose comme

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

Will vous donne un horodatage valide. Consultez la STR_TO_DATEdocumentation pour avoir plus d'informations sur la chaîne de format.

strnk
la source
10

Pour la date actuelle, utilisez simplement UNIX_TIMESTAMP()dans votre requête MySQL.

stackMonk
la source
1
Ne répond pas à la question du message d'origine.
Evan Donovan
c'est pour les personnes qui avaient besoin de convertir uniquement la date actuelle dans leur requête, répond à une partie de la question, pas besoin de votre gardien Evan, les gens ont voté pour la même chose pour montrer qu'ils en ont besoin
stackMonk
La question d'origine demandait de convertir un format spécifique; cela ne répond pas à cette question. J'annulerai le vote défavorable si vous modifiez pour clarifier cela.
Evan Donovan
il a été précisé dans la toute première ligne qu'il s'agit de la date actuelle.
stackMonk
J'ai édité pour clarifier la relation de cette réponse à la question originale et donner un exemple.
Evan Donovan
-5

Depuis 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
Brian Smith
la source
1
Cette réponse est pour MSSQL (bien que cette question porte une certaine confusion).
Salman A