MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

Pythonの日付をMySQL用の10桁タイムスタンプ(UNIX時間)に変換する方法

MySQLで使われる10桁の日付形式とは、いわゆるUNIXタイムスタンプ(1970年1月1日からの経過秒数)のことです。Pythonでは、time.mktime() 関数を使うことで、日付オブジェクトや文字列からこの形式へ簡単に変換できます。

ここでは、代表的な2つのケース(datetimeオブジェクトの場合と文字列の場合)それぞれの変換方法を紹介します。

datetimeオブジェクトの場合:timetuple() と mktime() を使う

すでに date オブジェクトや datetime オブジェクトとして日付を持っている場合は、そのオブジェクトから timetuple() で時刻タプルを取得し、それを time.mktime() に渡すだけで変換できます。

コード例

import time
from datetime import date
from datetime import datetime

my_date = date.today()
print(time.mktime(my_date.timetuple()))

実行結果

1514917800.0

このように、今日の日付が10桁のUNIXタイムスタンプ形式で出力されます。

文字列の場合:strptime() でパースしてから変換する

日付が文字列として与えられている場合は、まず time.strptime() を使って文字列を解析(パース)して時刻オブジェクトに変換し、その後 time.mktime() でMySQL対応のタイムスタンプ形式を作成します。

コード例

import time

my_time = time.strptime("01-01-18", "%d-%m-%y")
print(time.mktime(my_time))

実行結果

1514745000.0

strptime() の第2引数には、入力文字列の書式に合わせたフォーマット指定子を渡します。上の例では「日-月-年(下2桁)」という形式を表す %d-%m-%y を指定しています。

補足:Python 3なら datetime.timestamp() も便利

Python 3.3以降を使用している場合は、datetime オブジェクトに対して timestamp() メソッドを呼ぶだけでも同じ結果が得られます。

from datetime import datetime

dt = datetime.strptime("01-01-18", "%d-%m-%y")
print(dt.timestamp()) # 1514745000.0

状況に応じて、より簡潔なこちらの方法も活用するとよいでしょう。これらの方法で取得したタイムスタンプは、MySQLの INT 型カラムや FROM_UNIXTIME() 関数と組み合わせて利用できます。

  1. PHP変数「11:00 AM」をMySQLの時間形式に変換する方法

    PHPの「11:00 AM」をMySQLの時間形式に変換する方法 MySQLのTIME型やDATETIME型は、時刻を24時間表記の「HH:MM:SS」形式で管理します。そのため、「11:00 AM」のようにAM/PMを含む文字列をデータベースに保存する場合は、事前に形式を変換しておく必要があります。本記事では、PHP標準のDateTimeクラスを使った変換方法を、サンプルコードと実行結果付きで解説します。 変換の基本の流れ DateTime::createFromFormat() … 入力文字列をDateTimeオブジェクトとして解析する format() … 解析結果を「H:i:s」(2

  2. Pythonで日付(date)を日時(datetime)に変換する方法

    Pythonでは、datetimeモジュールのcombine()メソッドを使うことで、日付(date)と時刻(time)を組み合わせて、新しいdatetimeオブジェクトを作成できます。timeオブジェクトが手元にない場合は、datetime.min.time()を使って最小の時刻(つまり深夜0時=真夜中)を表すtimeオブjectを取得できます。方法1:datetime.combine() を使う以下の例では、今日の日付と最小の時刻(0時0分0秒)を組み合わせて、datetimeオブジェクトを生成しています。from datetime import date from datetime im