我的列TIME
类型为00:00:00
。我想只允许正值。因此,-05:30:00
例如无效。
有办法吗?
答案 0 :(得分:0)
我想为列设置一个DEFAULT VALUE,所以如果它收到'-05:00:00'值,它会将值设置为'00:00:00'。
您可以依赖time_format( time, format )
以及MySQL
中date_format( date, format )
个功能的需要。您还需要解析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 )