mysql建表 这句'month' BIGINT(2) default to_number(to_char(sysdate,'MM')) not null, 怎么改造
时间: 2024-02-01 10:04:06 浏览: 93
long_to_char.zip_LONG_TO_CHAR_long_long to char
在MySQL中,可以使用`MONTH()`函数获取当前时间的月份,因此可以将原SQL语句中的`to_char(sysdate,'MM')`改为`MONTH(NOW())`。同时,MySQL中没有`TO_NUMBER`函数,可以使用`CAST()`或`CONVERT()`函数将字符串转换为数字。因此,将`BIGINT`替换为`INT`,将原SQL语句中的`to_number(to_char(sysdate,'MM'))`改为`CAST(MONTH(NOW()) AS INT)`,得到的MySQL语句如下:
```
CREATE TABLE TF_B_MSPAYLOG (
trade_id VARCHAR(30) NOT NULL,
charge_id VARCHAR(30) NOT NULL,
outer_trade_time VARCHAR(14) NOT NULL,
pay_type CHAR(1) NOT NULL,
acct_id VARCHAR(16) NOT NULL,
user_id VARCHAR(16) NOT NULL,
serial_number VARCHAR(40) NOT NULL,
province_code CHAR(2) NOT NULL,
eparchy_code VARCHAR(6) NOT NULL,
is_user_pay CHAR(2) NOT NULL,
pay_fee_mode CHAR(4) NOT NULL,
trade_city_code VARCHAR(8) NOT NULL,
trade_depart_id VARCHAR(10) NOT NULL,
trade_eparchy_code VARCHAR(8) NOT NULL,
trade_province_code VARCHAR(8) NOT NULL,
trade_staff_id VARCHAR(20) NOT NULL,
channel_id VARCHAR(16) NOT NULL,
payment_id VARCHAR(20) NOT NULL,
bad_debt_tag CHAR(1) NOT NULL,
trade_fee VARCHAR(10) NOT NULL,
cancel_tag VARCHAR(2) NOT NULL,
trade_time DATE NOT NULL,
cancel_time DATE,
rsrv_info1 VARCHAR(20),
rsrv_info2 VARCHAR(40),
rsrv_info3 VARCHAR(20),
rsrv_info4 VARCHAR(20),
rsrv_info5 VARCHAR(20),
month INT DEFAULT CAST(MONTH(NOW()) AS INT) NOT NULL,
rsrv_info6 VARCHAR(300),
rsrv_info7 VARCHAR(300),
rsrv_info8 VARCHAR(300),
rsrv_info9 VARCHAR(20),
rsrv_date1 DATE,
rsrv_date2 DATE,
rsrv_date3 DATE,
rsrv_fee1 NUMBER(11),
rsrv_fee2 NUMBER(11),
rsrv_fee3 NUMBER(11),
rsrv_fee4 NUMBER(11),
rsrv_fee5 NUMBER(11),
net_type_code VARCHAR(2),
user_city_code VARCHAR(8),
user_province_code VARCHAR(8)
);
```
注意,MySQL中整数类型的长度是指占用的字节数,并非数字的位数。因此,`BIGINT(2)`应改为`INT`。
阅读全文