MySQL支持按年月日查询

在业务环境中,总是想要筛选出不同时间条件下的数据,例如我只想查询当天数据,当月数据或者本年数据。于是就想通过MySQL自带的几个时间函数进行简单的实现。

一、SQL语句实现

  • Talk is cheap,show me the code.
    查询当天的数据的两种方式:
    1、
SELECT
	* 
FROM
	cars_location 
WHERE
	YEAR ( create_time ) = YEAR ( now( ) ) 
	AND MONTH ( create_time ) = MONTH ( now( ) ) 
	AND DAY ( create_time ) = DAY ( now( ) )

2、

SELECT
	* 
FROM
	cars_location 
WHERE
	date( create_time ) = curdate( );

查询本年:

SELECT
	* 
FROM
	`cars_location` 
WHERE
	YEAR ( create_time ) = YEAR ( now( ) )

查询本月:

SELECT
	* 
FROM
	`cars_location` 
WHERE
	YEAR ( create_time ) = YEAR ( now( ) ) 
	AND MONTH ( create_time ) = MONTH ( now( ) )

二、结合Mybatis实现

首先我们来了解,假设我有一个dateFlag属性,专门用来判断前端传过来的查询时间条件,并且规定dateFlag='day’表示查询当天数据,dateFlag='month’表示查询当月数据,dateFlag='year’表示查询当年数据,以下就是mybatis的实现片段可供参考,其中需要注意在if test中的==条件后的参数需要加单引号。

<if test="dateFlag != null and dateFlag == 'day'">  
    AND YEAR ( create_time ) = YEAR ( now( ) ) 
	AND MONTH ( create_time ) = MONTH ( now( ) ) 
	AND DAY ( create_time ) = DAY ( now( ) )  
</if>  
<if test="dateFlag != null and dateFlag == 'month'">  
    AND YEAR ( create_time ) = YEAR ( now( ) ) 
	AND MONTH ( create_time ) = MONTH ( now( ) ) 
</if>  
<if test="dateFlag != null and dateFlag == 'year'">  
    AND YEAR ( create_time ) = YEAR ( now( ) )
</if>  

三、总结

通过了解MySQL的时间函数以及集合Mybatis的写法,成功对接后台实现根据dateFlag查询当日、当月或者本年的数据。题外话:我们从后台返回的时间戳总是毫秒数,如果我们要转换成"yyyy-MM-dd HH:mm:ss"的格式,那么可以参考以下的js函数进行转换:

function timeFormat(data){
        var datatime='';
        if( data != null|| data!=undefined){
            timestampToTime(data);
            function timestampToTime(timestamp) {
                var date = new Date(timestamp);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
                var Y = date.getFullYear() + '-';
                var M = ( date.getMonth() + 1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
                var D;
                if(  date.getDate() < 10 ){
                    D = "0"+date.getDate()+" ";
                }else{
                    D = date.getDate()+" ";
                }
                var h = ( date.getHours() < 10 ? '0'+(date.getHours()) : date.getHours() ) + ':';
                var m = ( date.getMinutes() < 10 ? '0'+(date.getMinutes() ) : date.getMinutes() ) + ':';
                var s = ( date.getSeconds()  < 10 ? '0'+(date.getSeconds() ) : date.getSeconds() );
                datatime = Y+M+D+h+m+s;
                return Y+M+D+h+m+s;
            }
            return datatime;
        }
    }

(PS:我在去年写的一篇关于油猴脚本的获取与使用博客在很长一段时间里都受到了很多朋友的关注,并在评论中表达了感谢。该博文是在我初次使用油猴脚本后抑制不住想要安利给大家使用的心情下撰写的,却意外的受到了好评,对大家产生了帮助让我觉得很开心。于是就更加坚定了自己坚持写博客的决心,希望自己写的技术博文也能够受到大家的关注。总之,共勉。)

参考资料:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值