在mysql中,存储时间可以使用varchar类型,也可以使用datetime,timestamp,或者是date类型。但是还可以使用int类型,只需要通过一些函数转换即可。
例如建立下面一个表:
CREATE TABLE test(
id INT AUTO_INCREMENT NOT NULL,
timsstr INT,
PRIMARY KEY(id)
);
timsstr表示存储时间,但是却用int类型,那么插入数据的时候。。。
这样是不行的:
INSERT INTO test(timsstr) VALUES(2014-06-01 13:12:00);
可以这样来,使用 UNIX_TIMESTAMP() 函数:
INSERT INTO test(timsstr) VALUES(UNIX_TIMESTAMP('2014-06-01 13:12:00'));
查询一下数据:
SELECT * FROM test;
这时间格式有点奇怪,看不懂,这是可以用 FROM_UNIXTIME() 函数解析:
SELECT id,FROM_UNIXTIME(timsstr) FROM test;
这样就可以了。。。
================================================================================================
另外,存储ip地址的时候,一般是用varchar类型的,这里我们可以用 INET_ATON() 存和 INET_NTOA() 来取:
如下,先建一个表:
CREATE TABLE ipSave(
id INT AUTO_INCREMENT NOT NULL,
ipaddress BIGINT,
PRIMARY KEY(id)
);
先插入一条数据:
INSERT INTO ipSave(ipaddress) VALUES(INET_ATON('192.168.1.2'));
一般查询结果是这样的,未解析,数据不对应:
SELECT * FROM ipSave;
利用 INET_NTOA() 函数解析后是这样的:
SELECT id,INET_NTOA(ipaddress) FROM ipSave;
这样就ok了。。。
当然了,这样做的目的是为了节省内存。