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.