@@ -119,6 +119,7 @@ public function build(Connection $connection, Grammar $grammar)
119119 */
120120 public function toSql (Connection $ connection , Grammar $ grammar )
121121 {
122+ $ this ->normalizeDatetimePrecision ($ connection , $ grammar );
122123 $ this ->addImpliedCommands ($ connection , $ grammar );
123124
124125 $ statements = [];
@@ -260,6 +261,22 @@ public function addFluentCommands(Connection $connection, Grammar $grammar)
260261 }
261262 }
262263
264+ /**
265+ * Normalizes any `null` datetime precision to the grammar's default.
266+ */
267+ protected function normalizeDatetimePrecision (Connection $ connection , Grammar $ grammar ): void
268+ {
269+ $ types = ['dateTime ' , 'dateTimeTz ' , 'time ' , 'timeTz ' , 'timestamp ' , 'timestampTz ' ];
270+
271+ foreach ($ this ->columns as $ column ) {
272+ if (! in_array ($ column ->type , $ types , strict: true )) {
273+ continue ;
274+ }
275+
276+ $ column ->precision ??= $ grammar ->getDatetimePrecision ();
277+ }
278+ }
279+
263280 /**
264281 * Determine if the blueprint has a create command.
265282 *
@@ -1103,7 +1120,7 @@ public function date($column)
11031120 * @param int|null $precision
11041121 * @return \Illuminate\Database\Schema\ColumnDefinition
11051122 */
1106- public function dateTime ($ column , $ precision = 0 )
1123+ public function dateTime ($ column , $ precision = null )
11071124 {
11081125 return $ this ->addColumn ('dateTime ' , $ column , compact ('precision ' ));
11091126 }
@@ -1115,7 +1132,7 @@ public function dateTime($column, $precision = 0)
11151132 * @param int|null $precision
11161133 * @return \Illuminate\Database\Schema\ColumnDefinition
11171134 */
1118- public function dateTimeTz ($ column , $ precision = 0 )
1135+ public function dateTimeTz ($ column , $ precision = null )
11191136 {
11201137 return $ this ->addColumn ('dateTimeTz ' , $ column , compact ('precision ' ));
11211138 }
@@ -1127,7 +1144,7 @@ public function dateTimeTz($column, $precision = 0)
11271144 * @param int|null $precision
11281145 * @return \Illuminate\Database\Schema\ColumnDefinition
11291146 */
1130- public function time ($ column , $ precision = 0 )
1147+ public function time ($ column , $ precision = null )
11311148 {
11321149 return $ this ->addColumn ('time ' , $ column , compact ('precision ' ));
11331150 }
@@ -1139,7 +1156,7 @@ public function time($column, $precision = 0)
11391156 * @param int|null $precision
11401157 * @return \Illuminate\Database\Schema\ColumnDefinition
11411158 */
1142- public function timeTz ($ column , $ precision = 0 )
1159+ public function timeTz ($ column , $ precision = null )
11431160 {
11441161 return $ this ->addColumn ('timeTz ' , $ column , compact ('precision ' ));
11451162 }
@@ -1151,7 +1168,7 @@ public function timeTz($column, $precision = 0)
11511168 * @param int|null $precision
11521169 * @return \Illuminate\Database\Schema\ColumnDefinition
11531170 */
1154- public function timestamp ($ column , $ precision = 0 )
1171+ public function timestamp ($ column , $ precision = null )
11551172 {
11561173 return $ this ->addColumn ('timestamp ' , $ column , compact ('precision ' ));
11571174 }
@@ -1163,7 +1180,7 @@ public function timestamp($column, $precision = 0)
11631180 * @param int|null $precision
11641181 * @return \Illuminate\Database\Schema\ColumnDefinition
11651182 */
1166- public function timestampTz ($ column , $ precision = 0 )
1183+ public function timestampTz ($ column , $ precision = null )
11671184 {
11681185 return $ this ->addColumn ('timestampTz ' , $ column , compact ('precision ' ));
11691186 }
@@ -1174,7 +1191,7 @@ public function timestampTz($column, $precision = 0)
11741191 * @param int|null $precision
11751192 * @return void
11761193 */
1177- public function timestamps ($ precision = 0 )
1194+ public function timestamps ($ precision = null )
11781195 {
11791196 $ this ->timestamp ('created_at ' , $ precision )->nullable ();
11801197
@@ -1189,7 +1206,7 @@ public function timestamps($precision = 0)
11891206 * @param int|null $precision
11901207 * @return void
11911208 */
1192- public function nullableTimestamps ($ precision = 0 )
1209+ public function nullableTimestamps ($ precision = null )
11931210 {
11941211 $ this ->timestamps ($ precision );
11951212 }
@@ -1200,7 +1217,7 @@ public function nullableTimestamps($precision = 0)
12001217 * @param int|null $precision
12011218 * @return void
12021219 */
1203- public function timestampsTz ($ precision = 0 )
1220+ public function timestampsTz ($ precision = null )
12041221 {
12051222 $ this ->timestampTz ('created_at ' , $ precision )->nullable ();
12061223
@@ -1213,7 +1230,7 @@ public function timestampsTz($precision = 0)
12131230 * @param int|null $precision
12141231 * @return void
12151232 */
1216- public function datetimes ($ precision = 0 )
1233+ public function datetimes ($ precision = null )
12171234 {
12181235 $ this ->datetime ('created_at ' , $ precision )->nullable ();
12191236
@@ -1227,7 +1244,7 @@ public function datetimes($precision = 0)
12271244 * @param int|null $precision
12281245 * @return \Illuminate\Database\Schema\ColumnDefinition
12291246 */
1230- public function softDeletes ($ column = 'deleted_at ' , $ precision = 0 )
1247+ public function softDeletes ($ column = 'deleted_at ' , $ precision = null )
12311248 {
12321249 return $ this ->timestamp ($ column , $ precision )->nullable ();
12331250 }
@@ -1239,7 +1256,7 @@ public function softDeletes($column = 'deleted_at', $precision = 0)
12391256 * @param int|null $precision
12401257 * @return \Illuminate\Database\Schema\ColumnDefinition
12411258 */
1242- public function softDeletesTz ($ column = 'deleted_at ' , $ precision = 0 )
1259+ public function softDeletesTz ($ column = 'deleted_at ' , $ precision = null )
12431260 {
12441261 return $ this ->timestampTz ($ column , $ precision )->nullable ();
12451262 }
@@ -1251,7 +1268,7 @@ public function softDeletesTz($column = 'deleted_at', $precision = 0)
12511268 * @param int|null $precision
12521269 * @return \Illuminate\Database\Schema\ColumnDefinition
12531270 */
1254- public function softDeletesDatetime ($ column = 'deleted_at ' , $ precision = 0 )
1271+ public function softDeletesDatetime ($ column = 'deleted_at ' , $ precision = null )
12551272 {
12561273 return $ this ->datetime ($ column , $ precision )->nullable ();
12571274 }
0 commit comments