MySQL конвертувати рядок дати в часову позначку Unix


137

Як перетворити такий формат у часову позначку unix?

Apr 15 2012 12:00AM

Формат, який я отримую від БД, здається, має AMкінець. Я спробував використовувати наступне, але це не вийшло:

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
Чи дата зберігається як текст у БД?
strnk

1
Це справді питання MySQL? Ваш синтаксис не пропонує цього.
Альваро Гонсалес

1
Здається, що питання стосується MSSQL.
Федір РИХТИК

Відповіді:


224

Спробуйте цей Запит для CONVERT DATETIME to UNIX TIME STAMP

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

Цей запит для 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
Дякую. Це працює. Це також можна використовувати в інших висловлюваннях, таких як оновлення, видалення, вставлення тощо
MR_AMDEV

1
Після стількох випробувань ваше рішення працював для мене: 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Це дата , я була 31 Oct 2017 4:16:49 pmтак що мені потрібно використовувати %d %M %Y %h:%i:%s %pдляSTR_TO_DATE
Дамодара Bashyal

35

Вам, безумовно, доведеться використовувати як STR_TO_DATEдля перетворення вашої дати в стандартний формат дати MySQL, так і UNIX_TIMESTAMPдля отримання часової позначки від неї.

Враховуючи формат вашої дати, щось подібне

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

Will надає дійсну позначку часу. Перегляньте STR_TO_DATEдокументацію, щоб отримати додаткову інформацію про форматний рядок


10

Для поточної дати просто використовуйте UNIX_TIMESTAMP()у своєму запиті MySQL.


1
Не відповідає на запитання з оригіналу повідомлення.
Еван Донован

людям, яким потрібно було перетворити лише поточну дату у своєму запиті, відповідає частина запитань, не потрібно, щоб ваш прислужник Evan, люди запросили те саме, щоб показати, що їм це потрібно
stackMonk

Оригінальне запитання пропонувалося перетворити певний формат; це не відповідає на це запитання. Я скасую протокол, якщо ви редагуєте його, щоб уточнити це.
Еван Донован

У першому рядку було з’ясовано, що це на поточну дату.
stackMonk

Я редагував, щоб уточнити зв’язок цієї відповіді з оригінальним запитанням і навести приклад.
Еван Донован

-5

З 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
Ця відповідь стосується MSSQL (хоча це питання має певну плутанину).
Салман А
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.