TIME
type( )の列があります00:00:00
。正の値のみを許可したい。したがって、-05:30:00
たとえば、は無効になります。
それを行う方法はありますか?
列にデフォルト値を設定したいので、「-05:00:00」の値を受け取ると、値は「00:00:00」に設定されます。
に依存することができtime_format( time, format )
、必要に応じてのdate_format( date, format )
関数に依存することができますMySQL
。substring
また、locate
解析する関数が 必要です。
時間フィールドをデフォルトまたは+veの一部の時間データで設定するには、次の例が役立ちます。
mysql> set @time_value='-23:51:48';
Query OK, 0 rows affected (0.00 sec)
例1:
mysql> insert
into time_table( time_field )
values ( if( locate( '-', @time_value ) = 1, '00:00:00', @time_value ) );
Query OK, 1 row affected (0.00 sec)
何が挿入されているか見てみましょう:
mysql> select time_field from time_table;
+------------+
| time_field |
+------------+
| 00:00:00 |
+------------+
1 row in set (0.00 sec)
例2:
mysql> insert
into time_table( time_field )
values ( substring( @time_value, ( locate( '-', @time_value ) + 1 ) ) );
Query OK, 1 row affected (0.00 sec)
例3:
mysql> insert
into time_table( time_field )
values
( substring( time_format( @time_value, '%H %k:%i:%s' ),
( locate( ' ', time_format( @time_value, '%H %k:%i:%s' ) ) + 1 )
)
);
Query OK, 1 row affected (0.00 sec)
これで:
H
00
:に戻る時間23
k
0
:に戻る時間23
i
:分は、数値00
から59
s
:秒が戻るため00
に59
何が挿入されているか見てみましょう:
mysql> select time_field from time_table;
+------------+
| time_field |
+------------+
| 23:51:48 |
+------------+
1 row in set (0.00 sec)
のようなフォーマット指定文字の詳細については、を%k
参照してください。date_format( date, format )