YYYY-MM-DD 列を UNIX タイムスタンプに変換したい。この質問に似ています: MySQL - MM/DD/YY を Unix タイムスタンプに変換する
MySQL は、'2012-05-10' の値を正しい unixtime に変換していないようです。失敗する推奨関数は次のとおりです。
SELECT UNIX_TIMESTAMP(CAST(dateid AS DATE)) AS unixtime
YYYY-MM-DD 列を UNIX タイムスタンプに変換したい。この質問に似ています: MySQL - MM/DD/YY を Unix タイムスタンプに変換する
MySQL は、'2012-05-10' の値を正しい unixtime に変換していないようです。失敗する推奨関数は次のとおりです。
SELECT UNIX_TIMESTAMP(CAST(dateid AS DATE)) AS unixtime
使用しているバージョンは何MySQL
ですか? SQLFiddle で MySQL 5.5.27 によってテストされたように、これら 2 つのクエリは機能しました
SELECT UNIX_TIMESTAMP(CAST('2012-05-10 00:00:00' AS DATETIME)) As UnixTime;
SELECT UNIX_TIMESTAMP(CAST('2012-05-10' AS DATE)) As UnixTime;
正確に何が問題なのかはわかりませんが、次の方法で問題なく動作します。
CREATE TABLE ex (dt VARCHAR(20));
INSERT INTO ex SET dt = '2012-05-10';
SELECT
UNIX_TIMESTAMP('2012-05-10') ex1,
UNIX_TIMESTAMP(dt) ex2,
UNIX_TIMESTAMP(CAST('2012-05-10' AS DATE)) ex3,
UNIX_TIMESTAMP(CAST(dt AS DATE)) ex4
FROM ex;
戻り値:
+------------+------------+------------+------------+
| ex1 | ex2 | ex3 | ex4 |
+------------+------------+------------+------------+
| 1336633200 | 1336633200 | 1336633200 | 1336633200 |
+------------+------------+------------+------------+
ご覧のとおり、MySQL は暗黙的にこの形式の文字列を s に変換するため、文字列がorCAST()
の形式である場合は必要ありません。YYYY-MM-DD
YYYY-MM-DD HH:MM:SS
DATE
http://sqlfiddle.com/#!2/1a215/3を参照してください