MySQL chuyển đổi chuỗi ngày thành dấu thời gian Unix


137

Làm cách nào để chuyển đổi định dạng sau sang dấu thời gian unix?

Apr 15 2012 12:00AM

Định dạng tôi nhận được từ DB dường như có AMở cuối. Tôi đã thử sử dụng các cách sau nhưng không được:

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
Là ngày được lưu trữ dưới dạng văn bản trong DB?
strnk

1
Có thực sự là một câu hỏi MySQL? Cú pháp của bạn không đề xuất như vậy.
Álvaro González

1
Có vẻ như câu hỏi về MSSQL.
Fedir RYKHTIK

Câu trả lời:


224

Hãy thử truy vấn này cho CONVERT DATETIME to UNIX TIME STAMP

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

Truy vấn này cho 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
Cảm ơn. Điều này hoạt động. Điều này cũng có thể được sử dụng trong các báo cáo khác như cập nhật, xóa, chèn, v.v.
MR_AMDEV

1
Sau rất nhiều thử nghiệm, giải pháp của bạn đã có hiệu quả với tôi: 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Đây là ngày tôi có 31 Oct 2017 4:16:49 pmnên tôi cần sử dụng %d %M %Y %h:%i:%s %pchoSTR_TO_DATE
Damodar Bashyal

35

Bạn chắc chắn sẽ phải sử dụng cả hai STR_TO_DATEđể chuyển đổi ngày của bạn sang định dạng ngày chuẩn của MySQL và UNIX_TIMESTAMPđể lấy dấu thời gian từ nó.

Đưa ra định dạng ngày của bạn, một cái gì đó như

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

Sẽ cung cấp cho bạn một dấu thời gian hợp lệ. Xem STR_TO_DATEtài liệu để có thêm thông tin về chuỗi định dạng.


10

Đối với ngày hiện tại chỉ cần sử dụng UNIX_TIMESTAMP()trong truy vấn MySQL của bạn.


1
Không trả lời câu hỏi từ bài viết gốc.
Evan Donovan

nó dành cho những người chỉ cần chuyển đổi ngày hiện tại trong truy vấn của họ, trả lời một phần câu hỏi, không cần đến người gác cổng của bạn Evan, mọi người đã nâng cấp tương tự để cho thấy họ cần điều này
stackMonk

Câu hỏi ban đầu được yêu cầu chuyển đổi một định dạng cụ thể; đây không phải là trả lời câu hỏi đó Tôi sẽ hủy downvote nếu bạn chỉnh sửa để làm rõ điều đó.
Evan Donovan

nó đã được làm rõ trong dòng đầu tiên rằng đây là ngày hiện tại.
stackMonk

Tôi đã chỉnh sửa để làm rõ mối quan hệ của câu trả lời này với câu hỏi ban đầu và đưa ra một ví dụ.
Evan Donovan

-5

Từ 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
Câu trả lời này dành cho MSSQL (mặc dù câu hỏi này có một số nhầm lẫn).
Salman A
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.