0

TIMEtype( )の列があります00:00:00。正の値のみを許可したい。したがって、-05:30:00たとえば、は無効になります。

それを行う方法はありますか?

4

1 に答える 1

0

列にデフォルト値を設定したいので、「-05:00:00」の値を受け取ると、値は「00:00:00」に設定されます。

に依存することができtime_format( time, format )、必要に応じてのdate_format( date, format )関数に依存することができますMySQLsubstringまた、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)  

これで:

  1. H00:に戻る時間23
  2. k0:に戻る時間23
  3. i:分は、数値00から59
  4. s:秒が戻るため0059

何が挿入されているか見てみましょう:

mysql> select time_field from time_table;
+------------+
| time_field |
+------------+
| 23:51:48   |
+------------+
1 row in set (0.00 sec)

のようなフォーマット指定文字の詳細については、を%k参照してください。date_format( date, format )

于 2012-06-05T15:19:18.037 に答える