2017-02-02 6 views
-2

以下の表を検討してください。エントリがあるとし、次の次のクエリは実行されますか?

CREATE TABLE `Emp` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `userName` int(11) DEFAULT NULL, 
    `modiTime` datetime DEFAULT NULL, 
    PRIMARY KEY (`id`) 
); 

:「2017年2月2日午後2時05分26秒」です1486044326.の

insert into `Emp` (`id`, `userName`, `modiTime`) values('1','test','2017-02-02 14:05:26'); 

エポックのUnixタイムスタンプは、それが次のクエリを実行することは可能ですか?私が初心者なので理由を説明してください。

SELECT * FROM Emp WHERE modiTime = 1486044326; 

答えて

0

なぜあなたはこれをしますか? moditimeは日時です。 1486044326は数字です。あなたはdatetimeと数値を比較しません。

日付を検索する場合は、MySQLが日付リテラルに対して受け入れるリテラルを使用します。 '2017-02-02 14:05:26'

WHERE modiTime = '2017-02-02 14:05:26' 

(MySQLは日時リテラルのための標準的なSQL構文WHERE modiTime = TIMESTAMP '2017-02-02 14:05:26'をサポートしていません。)

だけこのUnixの番号を持っている場合、その日時に変換します。 MySQLはこのために関数FROM_UNIXTIMEを提供します。これは、有効なdatetime形式の文字列(つまり、 'YYYY-MM-DD HH:MM:SS')に変換されます。

WHERE modiTime = FROM_UNIXTIME(1486044326) 

これは結果の文字列を暗黙的にdatetimeにキャストします。徹底したい場合は、明示的にキャストすることができます。結果は、有効な日時リテラル形式の文字列であることがわかります。

WHERE modiTime = CAST(FROM_UNIXTIME(1486044326) AS DATETIME) 
関連する問題