前言
由于自己有点需求需要在mysql中按照时间段进行查询,而自己又对这些不太了解,所以趁着这次机会将mysql和时间段相关的查询语句做一个记录:
常用函数:
DATE_SUB()函数
这个函数的date是一个时间表达式,一般取得是数据库中的一个字段。后面的 一般来讲是不变的, 一般是一个时间段,代表过去的,比如是30天,那么这里就是30,若是60,这里就是60, 则表示的是一个时间属性(可能表达的不是很准确),如下:
在这里我用 和 同时写了一个sql 在这个里面,将MONTH和YEAR_MONTH互换都是没问题的,这是目前暂时未发现有什么差异的。
FROM_UNIXTIME()函数
这是一个非常有用的函数,其作用是将一串数字或者一个时间戳转换成指定格式的一个日期,在这个里面的话第一个参数需要是一个UNIX时间戳,而第二个参数则是一个format的字符串,注意观察下面的三个例子的不同,第二个sql在后面做了一个+0的操作结果日期格式直接被转换成了一串数字。
CONCAT()函数
函数可以将一个字符串按照第二个参数,具体来说就是对应以下语句 这条语句的执行结果结果是2018-01,正好是从头截取了7个字符。
参数:第一个是字符串,第二个是截取的长度。
LEFT()函数
函数可以将一个字符串作为mysql的语句来执行,类比到Python就是python中的 函数,但是该函数若执行的字符串中包含一个 :注意这个null若是关键字则是会则会导致
sum()和Count()在统计1和0的区别
这两个函数的区别在一次使用统计的时候遇到了一点问题,例如一个字段是标识符,也就是一个字段的值除了0就是1,那么要统计为1的话一般来讲就是 这样就可以值选择为1的行,那么这里如果使用的是count的话,这里的这个规则是无法应用的,具体如下:
因为当时没有仔细的区分这两种用法的区别,所以才导致了统计错误。在这里,count只是一个统计,他只是统计应用规则之后的的符合数据,但是sum不同,sum配合 则可以选择出相匹配的一些数据
DATE_FORMAT()函数
这个函数可以将一个时间按照指定的格式输出,类似于Java中的dateformat函数,是可以将一个时间进行格式的。
一些常用函数组合:
查询本月的数据:
在这里是可以使用 函数和 函数,首先可以使用 函数截取一个字符串长度。比如获取当月的话是可以通过left来获取然后再将1号拼接上去,最后用数据库的日期再减去1号就可以了。
最后本月的1号就被查询出来了,然后便可以进行数据操作了
查询指定天数的数据
假设现在需要查询往期30天的数据,那么可以通过 函数来进行查询:
总结:
目前关于时间方面的sql总结差不多就是这些了,其他的以后再进行补充。
领取专属 10元无门槛券
私享最新 技术干货