web-dev-qa-db-ja.com

日付と時刻の列を組み合わせてタイムスタンプにするMySql

これは比較的簡単に行えると思いますが、構文がわかりません。タイムスタンプ列に結合する日付と時刻の列があります。選択を使用してこれをどのように照会しますか?

34
Richard

Mysqlには、datetime( '2017-10-26'、'09:28:00 ')のようなdatetimeのコンストラクターがないようです。そのため、コンポーネント部分を文字列として扱い、文字列連結関数を使用する必要があります(mysqlには文字列連結のための||演算子はありません)。日時型が必要な場合は、キャストする必要があります。

concat(datefield,' ',timefield) as date

select cast(concat('2017-10-26', ' ', '09:28:00') as datetime) as dt;
51
Haim Evgi

または、組み込みの TIMESTAMP(date,time) 関数を試すこともできます。

66
ConceptRat

組み込み関数を使用できる場合は、それを使用してください。ここでの方法は、指定されたタイムスタンプ間のレコードを検索する例です。

SELECT `id` FROM `ar_time` WHERE TIMESTAMP(`cdate`,`ctime`) BETWEEN fromTimeStamp AND nowTimeStamp;
6
Tom Lime

24時間

TIMESTAMP(Date, STR_TO_DATE(Time, '%h:%i %p'))
2
SELECT * FROM tablename WHERE TIMESTAMP(datecol, timecol) > '2015-01-01 12:00:00';
1
Lydia

O.P.はSELECTと言いましたが、誰かがタイムスタンプ列を追加したい場合

ALTER TABLE `t` ADD COLUMN `stamp` TIMESTAMP;
UPDATE `t` SET `stamp` = STR_TO_DATE(CONCAT(`Date`, ' ', `Time`), '%m/%d/%Y %H:%i:%s');

フォーマット文字列 を好みに合わせて調整します。

1
Bob Stein