1.DATETIME的日期范围是1001--9999年,TIMESTAMP的时间范围是1970--2038年. 2.DATETIME存储时间与时区无关,TIMESTAMP存储时间与时区有关,显示的值也依赖于时区.在mysql服务器,操作系统以及客户端连接都有时区的设置. 3.DATETIME使用8字节的存储空间,TIMESTAMP的存储空间为4字节.因此,TIMESTAMP比DATETIME的空间利用率更高. 4.DATETIME的默认值为null.TIMESTAMP的字段默认不为空(not n
行列转换常见场景 由于很多业务表因为历史原因或者性能原因,都使用了违反第一范式的设计模式.即同一个列中存储了多个属性值(具体结构见下表). 这种模式下,应用常常需要将这个列依据分隔符进行分割,并得到列转行的结果. 表数据: ID Value 1 tiny,small,big 2 small,medium 3 tiny,big 期望得到结果: ID Value 1 tiny 1 small 1 big 2 small 2 medium 3 tiny 3 big 具体方法 先从一个具体实例开始我们的
Cast函数:CONVERT函数. 用法:CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING transcoding_name). SELECT CONVERT('abc' USING utf8); 将varchar 转为Int 用 cast(str as unsigned) str为varchar类型的字符串 . 比如常用的百分比转换: select cast((1/3)*100 as UNSIGNED) as percent
方法一: 你也可以:select * from t1 where unix_timestamp(time1) > unix_timestamp('2011-03-03 17:39:05') and unix_timestamp(time1) < unix_timestamp('2011-03-03 17:39:52');就是用unix_timestamp函数,将字符型的时间,转成unix时间戳.个人觉得这样比较更踏实点儿. 方法二: time1 between '2011-03-03 17:3