回答編集履歴

2

誤字修正

2017/09/07 09:31

投稿

calkinos
calkinos

スコア452

test CHANGED
@@ -54,7 +54,7 @@
54
54
 
55
55
  ```
56
56
 
57
- 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)
57
+ 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)
58
58
 
59
59
  ```
60
60
 
@@ -76,7 +76,7 @@
76
76
 
77
77
  ```
78
78
 
79
- 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)
79
+ 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)
80
80
 
81
81
  ```
82
82
 

1

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

2017/09/07 09:31

投稿

calkinos
calkinos

スコア452

test CHANGED
@@ -26,6 +26,22 @@
26
26
 
27
27
  のようになります。
28
28
 
29
+ 出力は文字列です。
30
+
31
+ 詳しくはpythonのstrftimeで利用できる[format](https://docs.python.jp/3/library/datetime.html#strftime-strptime-behavior)を見てください。
32
+
33
+
34
+
35
+ 一方、MySQLでは、文字列で受け取った時刻データをdatetime型としてデータベースに保存するには、
36
+
37
+ [str_to_date()](https://dev.mysql.com/doc/refman/5.6/ja/date-and-time-functions.html) というMySQLの関数を利用する必要があります。
38
+
39
+
40
+
41
+ それを踏まえると
42
+
43
+
44
+
29
45
 
30
46
 
31
47
  ```
@@ -38,8 +54,34 @@
38
54
 
39
55
  ```
40
56
 
41
- sql = u"insert into sensor values(%s, %s,%s,%s)"%(datetime.now().strftime('%Y-%m-%d %H:%M:00'),value,t,h)
57
+ 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)
42
58
 
43
59
  ```
44
60
 
61
+
62
+
45
63
  のような書き方をすればよいかもしれません。
64
+
65
+ ( %%H:%%i:%%S の代わりに %%Tが使えるかもしれません)
66
+
67
+
68
+
69
+ 今回は%記法を利用しているため、 Python文字列中で%を使うために%%と二重に記載する必要があります。
70
+
71
+
72
+
73
+ 他に format文字列というのもあり、そちらだと
74
+
75
+
76
+
77
+ ```
78
+
79
+ 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)
80
+
81
+ ```
82
+
83
+
84
+
85
+ のように若干すっきり書けます。
86
+
87
+