teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

誤字修正

2017/09/07 09:31

投稿

calkinos
calkinos

スコア452

answer CHANGED
@@ -26,7 +26,7 @@
26
26
  ```
27
27
 
28
28
  ```
29
- sql = u"insert into sensor values(str_to_date('%s', '%%Y-%%m-%%d %%H:%%i:%%S') ,%s,%s,%s)"%(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),value,t,h)
29
+ sql = u"insert into sensor values(str_to_date('%s', '%%Y-%%m-%%d %%H:%%i:%%S') ,%s,%s,%s)"%(datetime.now().strftime('%Y-%m-%d %H:%M:00'),value,t,h)
30
30
  ```
31
31
 
32
32
  のような書き方をすればよいかもしれません。
@@ -37,7 +37,7 @@
37
37
  他に format文字列というのもあり、そちらだと
38
38
 
39
39
  ```
40
- sql = u"insert into sensor values(str_to_date('{}', '%Y-%m-%d %H:%i:%S') ,{},{},{})".format(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),value,t,h)
40
+ sql = u"insert into sensor values(str_to_date('{}', '%Y-%m-%d %H:%i:%S') ,{},{},{})".format(datetime.now().strftime('%Y-%m-%d %H:%M:00'),value,t,h)
41
41
  ```
42
42
 
43
43
  のように若干すっきり書けます。

1

コメントでやり取りした内容のまとめ

2017/09/07 09:31

投稿

calkinos
calkinos

スコア452

answer CHANGED
@@ -12,12 +12,32 @@
12
12
  datetime.now().strftime('%Y-%m-%d %H:%M:00')
13
13
  ```
14
14
  のようになります。
15
+ 出力は文字列です。
16
+ 詳しくはpythonのstrftimeで利用できる[format](https://docs.python.jp/3/library/datetime.html#strftime-strptime-behavior)を見てください。
15
17
 
18
+ 一方、MySQLでは、文字列で受け取った時刻データをdatetime型としてデータベースに保存するには、
19
+ [str_to_date()](https://dev.mysql.com/doc/refman/5.6/ja/date-and-time-functions.html) というMySQLの関数を利用する必要があります。
20
+
21
+ それを踏まえると
22
+
23
+
16
24
  ```
17
25
  sql = u"insert into sensor values(now(), %s,%s,%s)"%(value,t,h)
18
26
  ```
19
27
 
20
28
  ```
21
- sql = u"insert into sensor values(%s, %s,%s,%s)"%(datetime.now().strftime('%Y-%m-%d %H:%M:00'),value,t,h)
29
+ sql = u"insert into sensor values(str_to_date('%s', '%%Y-%%m-%%d %%H:%%i:%%S') ,%s,%s,%s)"%(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),value,t,h)
22
30
  ```
31
+
23
- のような書き方をすればよいかもしれません。
32
+ のような書き方をすればよいかもしれません。
33
+ ( %%H:%%i:%%S の代わりに %%Tが使えるかもしれません)
34
+
35
+ 今回は%記法を利用しているため、 Python文字列中で%を使うために%%と二重に記載する必要があります。
36
+
37
+ 他に format文字列というのもあり、そちらだと
38
+
39
+ ```
40
+ sql = u"insert into sensor values(str_to_date('{}', '%Y-%m-%d %H:%i:%S') ,{},{},{})".format(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),value,t,h)
41
+ ```
42
+
43
+ のように若干すっきり書けます。