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

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')

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.


10

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


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

1
Cette réponse est pour MSSQL (bien que cette question porte une certaine confusion).
Salman A
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.