MySQL 时间函数/分页SQL

目录

时间函数

时间格式化范围-SQL

DATE_FORMAT

查询结果自增编号xml

ORACLE-ROWNUM

MYSQL-@NUM


  • 时间函数

  1. 1 NOW

获取当前日期和时间的函数。

语法: NOW()

例如:select NOW();

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%S');
  1. 2 CURDATE

获取当前的日期

语法:CURDATE()

  1. 3 CURTIME()

获取当前时间

语法:CURTIME()

  1. 4 DATE

获取日期时间或者日期的日期部分

语法:DATE(date)

date 参数是合法的日期表达式。

  1. 5 EXTRACT

获取返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

语法:EXTRACT(unit FROM date)

date 参数是合法的日期表达式。

unit 参数可以是下列的值:MICROSECOND、SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER、YEAR、SECOND_MICROSECOND、MINUTE_MICROSECOND、MINUTE_SECOND、HOUR_MICROSECOND、HOUR_SECOND、HOUR_MINUTE、DAY_MICROSECOND、DAY_SECOND、DAY_MINUTE、DAY_HOUR、YEAR_MONTH

例如获取当前年月

SELECT EXTRACT(YEAR_MONTH FROM now())
  1. 6 DATE_ADD

将日期添加指定的时间间隔。

语法:DATE_ADD(date,INTERVAL expr type)

date 参数是合法的日期表达式。expr 参数是添加的时间间隔。

type 参数可以是下列值:MICROSECOND、SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER、YEAR、SECOND_MICROSECOND、MINUTE_MICROSECOND、MINUTE_SECOND、HOUR_MICROSECOND、HOUR_SECOND、HOUR_MINUTE、DAY_MICROSECOND、DAY_SECOND、DAY_MINUTE、DAY_HOUR、YEAR_MONTH

例如:select DATE_ADD(now(),INTERVAL 2 DAY); //获取两天后的时间

  1. 7 DATE_SUB

将日期减去指定的时间间隔。

语法:DATE_SUB(date,INTERVAL expr type)

date 参数是合法的日期表达式。expr 参数是添加的时间间隔。

type 参数可以是下列值:MICROSECOND、SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER、YEAR、SECOND_MICROSECOND、MINUTE_MICROSECOND、MINUTE_SECOND、HOUR_MICROSECOND、HOUR_SECOND、HOUR_MINUTE、DAY_MICROSECOND、DAY_SECOND、DAY_MINUTE、DAY_HOUR、YEAR_MONTH

例如:select DATE_SUB(now(),INTERVAL 2 DAY); //获取两天前的时间

  1. 8 DATEDIFF

获取两个日期之间的天数。(只有日期部分参与计算)

语法:DATEDIFF(date1,date2)

date1 和 date2 参数是合法的日期或日期/时间表达式。

例如:SELECT DATEDIFF(NOW(),'2008-08-08') AS 北京奥运会多天前

  1. 9 DATEFORMAT

格式化日期时间

语法:DATE_FORMAT(date,format)

date 参数是合法的日期。format 规定日期/时间的输出格式。

格式:描述

%a:缩写星期名

%b:缩写月名

%c:月,数值

%D:带有英文前缀的月中的天

%d:月的天,数值(00-31)

%e:月的天,数值(0-31)

%f:微秒

%H:小时 (00-23)

%h:小时 (01-12)

%I:小时 (01-12)

%i:分钟,数值(00-59)

%j:年的天 (001-366)

%k:小时 (0-23)

%l:小时 (1-12)

%M:月名

%m:月,数值(00-12)

%p:AM 或 PM

%r:时间,12-小时(hh:mm:ss AM 或 PM)

%S:秒(00-59)

%s:秒(00-59)

%T:时间, 24-小时 (hh:mm:ss)

%U:周 (00-53) 星期日是一周的第一天

%u:周 (00-53) 星期一是一周的第一天

%V:周 (01-53) 星期日是一周的第一天,与 %X 使用

%v:周 (01-53) 星期一是一周的第一天,与 %x 使用

%W:星期名

%w:周的天 (0=星期日, 6=星期六)

%X:年,其中的星期日是周的第一天,4 位,与 %V 使用

%x:年,其中的星期一是周的第一天,4 位,与 %v 使用

%Y:年,4 位

%y:年,2 位

  • 时间格式化范围-SQL

  • DATE_FORMAT

下面两个语句的效果相同

SELECT *
FROM `tablename`
WHERE DATE_FORMAT(`create_time`, '%Y-%m-%d-%H-%i-%S') < DATE_FORMAT(NOW(), '%Y-%m-%d-%H-%i-%S')
SELECT *
FROM `tablename`
WHERE create_time >= DATE_FORMAT(`create_time`, '%Y-%m-%d')
	AND create_time <= DATE_FORMAT(NOW(), '%Y-%m-%d')
  • 查询结果自增编号xml

  • ORACLE-ROWNUM

<select id="findPage" parameterType="com.gisquest.realestate.modules.microqjdctool.domain.Xmsf"
            resultMap="BaseResultMap">
        SELECT
        <include refid="Base_Column_List"/>
        FROM ( SELECT A.*, ROWNUM AS RN FROM ( SELECT
        <include refid="Base_Column_List"/>
        FROM XM_SF
        <where>
            <if test="objectid != null and objectid != ''">
                OBJECTID LIKE '%'||#{objectid}
            </if>
            <if test="zfsbxx != null and zfsbxx != ''">
                AND ZFSBXX LIKE '%'||#{zfsbxx}||'%'
            </if>
        </where>
        ) A )
        <where>
            <if test="page.startRow != null and  page.startRow != '' and page.endRow != null and page.endRow != ''">
                RN BETWEEN ${page.startRow} AND ${page.endRow}
            </if>
            <if test="page.orderBy != null and page.orderBy != ''">
                order by #{page.orderBy}
            </if>
        </where>
    </select>
  • MYSQL-@NUM

SET @num=0;
SELECT @num:=@num+1 AS RN,A.*
FROM (
	SELECT *
	FROM gisq_analysis_bookmark
	WHERE creator = '0d3b320d-fc26-11e8-bbba-2a46544a2d0b'
) A

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值