STRICT_TRANS_TABLESでのゼロ日付確認。

db tech showcaseでもチラッと話しに出ていたんですが、sql_mode = STRICT_TRANS_TABLES の場合に<a href="http://bugs.mysql.com/bug.php?id=75439" target="_blank">5.6と5.7.5以降で異なる</a>という問題が解決されたということらしい。
全く同じ挙動に戻すのか、デフォルト値を変えるのか、互換性オプションを付けるのかはわかりませんが、5.6.25と5.7.7DMRで確認。
sql_modeは
<pre class="">+--------------------------------------------+
| @@sql_mode                                 |
+--------------------------------------------+
| STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+</pre>
でそろえました。
<h4>Timestamp型</h4>
以下の３つを確認しました。
<pre>
CREATE TABLE `mytable` ( 
`id` int(10) unsigned NOT NULL, 
`field2` tinyint(3) unsigned NOT NULL, 
`last_change` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
);</pre><pre>CREATE TABLE `mytable` ( 
`id` int(10) unsigned NOT NULL, 
`field2` tinyint(3) unsigned NOT NULL, 
`last_change` timestamp NOT NULL DEFAULT '1970-01-01 09:00:00'
);</pre><pre>CREATE TABLE `mytable` ( 
`id` int(10) unsigned NOT NULL, 
`field2` tinyint(3) unsigned NOT NULL, 
`last_change` timestamp NOT NULL DEFAULT '1970-01-01 09:00:01'
);</pre>
結果

<table style="border-color: #000000;">
<thead>
<tr style="background-color: #5c7dc4;">
<td style="border-color: #000000; text-align: center;"></td>
<td style="border-color: #000000; text-align: center;">5.6.25</td>
<td style="border-color: #000000; text-align: center;">5.7.7DMR</td>
</tr>
</thead>
<tbody>
<tr>
<td style="border-color: #000000; text-align: center;">'0000-00-00 00:00:00'</td>
<td style="border-color: #000000; text-align: center;">OK</td>
<td style="border-color: #000000; text-align: center;">NG</td>
</tr>
<tr>
<td style="border-color: #000000; text-align: center;">'1970-01-01 09:00:00'</td>
<td style="border-color: #000000; text-align: center;"><strong><span style="color: #ff0000;">NG</span></strong></td>
<td style="border-color: #000000; text-align: center;">NG</td>
</tr>
<tr>
<td style="border-color: #000000; text-align: center;">'1970-01-01 09:00:01'</td>
<td style="border-color: #000000; text-align: center;">OK</td>
<td style="border-color: #000000; text-align: center;">OK</td>
</tr>
</tbody>
</table>
&nbsp;
<h4>Date型</h4>
以下の３つを確認しました。
<pre>CREATE TABLE `mytable2` ( 
`id` int(10) unsigned NOT NULL, 
`field2` tinyint(3) unsigned NOT NULL, 
`last_change_dt` date NOT NULL DEFAULT '0000-00-00'
);</pre><pre>CREATE TABLE `mytable2` ( 
`id` int(10) unsigned NOT NULL, 
`field2` tinyint(3) unsigned NOT NULL, 
`last_change_dt` date NOT NULL DEFAULT '0000-00-01'
);</pre><pre>CREATE TABLE `mytable2` ( 
`id` int(10) unsigned NOT NULL, 
`field2` tinyint(3) unsigned NOT NULL, 
`last_change_dt` date NOT NULL DEFAULT '0000-01-01'
);</pre>
結果

<table style="border-color: #000000;">
<thead>
<tr style="background-color: #5c7dc4;">
<td style="border-color: #000000; text-align: center;"></td>
<td style="border-color: #000000; text-align: center;">5.6.25</td>
<td style="border-color: #000000; text-align: center;">5.7.7DMR</td>
</tr>
</thead>
<tbody>
<tr>
<td style="border-color: #000000; text-align: center;">'0000-00-00'</td>
<td style="border-color: #000000; text-align: center;">OK</td>
<td style="border-color: #000000; text-align: center;">NG</td>
</tr>
<tr>
<td style="border-color: #000000; text-align: center;">'0000-00-01'</td>
<td style="border-color: #000000; text-align: center;"><span style="color: #ff0000;">OK</span></td>
<td style="border-color: #000000; text-align: center;">NG</td>
</tr>
<tr>
<td style="border-color: #000000; text-align: center;">'0000-01-01'</td>
<td style="border-color: #000000; text-align: center;">OK</td>
<td style="border-color: #000000; text-align: center;">OK</td>
</tr>
</tbody>
</table>
完全なるゼロ日付は、MySQL独自だけど０月１日を通すのか。
jdbcURLのクエリに"zeroDateTimeBehavior=convertToNull"を付けても、おそらくNullには変換されないだろうから、Javaではおかしくなりそう。