@@ -287,17 +287,29 @@ static VALUE rb_mysql_result_fetch_field_type(VALUE self, unsigned int idx) {
287
287
rb_field_type = rb_sprintf ("double(%ld,%d)" , field -> length , field -> decimals );
288
288
break ;
289
289
case MYSQL_TYPE_TIME : // MYSQL_TIME
290
- rb_field_type = rb_str_new_cstr ("time" );
290
+ if (field -> decimals == 0 ) {
291
+ rb_field_type = rb_str_new_cstr ("time" );
292
+ } else {
293
+ rb_field_type = rb_sprintf ("time(%d)" , field -> decimals );
294
+ }
291
295
break ;
292
296
case MYSQL_TYPE_DATE : // MYSQL_TIME
293
297
case MYSQL_TYPE_NEWDATE : // MYSQL_TIME
294
298
rb_field_type = rb_str_new_cstr ("date" );
295
299
break ;
296
300
case MYSQL_TYPE_DATETIME : // MYSQL_TIME
297
- rb_field_type = rb_str_new_cstr ("datetime" );
301
+ if (field -> decimals == 0 ) {
302
+ rb_field_type = rb_str_new_cstr ("datetime" );
303
+ } else {
304
+ rb_field_type = rb_sprintf ("datetime(%d)" , field -> decimals );
305
+ }
298
306
break ;
299
307
case MYSQL_TYPE_TIMESTAMP : // MYSQL_TIME
300
- rb_field_type = rb_str_new_cstr ("timestamp" );
308
+ if (field -> decimals == 0 ) {
309
+ rb_field_type = rb_str_new_cstr ("timestamp" );
310
+ } else {
311
+ rb_field_type = rb_sprintf ("timestamp(%d)" , field -> decimals );
312
+ }
301
313
break ;
302
314
case MYSQL_TYPE_DECIMAL : // char[]
303
315
case MYSQL_TYPE_NEWDECIMAL : // char[]
0 commit comments