MySQL时间函数

1.时间间隔函数 ADDDATE(date,INTERVAL expr unit)
interval 代表时间间隔 :

SELECT NOW();2018-06-20 15:00:00 当前时间
SELECT ADDDATE(‘2018-06-20 15:00:00‘,INTERVAL -60 SECOND) AS time2018-06-20 14:59:00 – 减60秒
SELECT ADDDATE(‘2018-06-20 15:00:00‘,INTERVAL -1 MINUTE) AS time;2018-06-20 14:59:00 – 减1分钟
SELECT ADDDATE(‘2018-06-20 15:00:00‘,INTERVAL -1 HOUR) AS time;2018-06-20 14:00:00 – 减1小时
SELECT ADDDATE(‘2018-06-20 15:00:00‘,INTERVAL -1 DAY) AS time;2018-06-19 15:00:00 – 减1天
SELECT ADDDATE(‘2018-06-20 15:00:00‘,INTERVAL -1 MONTH) AS time;2018-05-20 15:00:00 – 减1个月
SELECT ADDDATE(‘2018-06-20 15:00:00‘,INTERVAL -1 YEAR) AS time;2017-06-20 15:00:00 – 减1年

举例:计算入库表在30天前的计划库存量和实际库存量

select 
sum(extant_quantity),
sum(pre_quantity) 
from 
t_cargo_instorage 
where 
create_time 
between 
ADDDATE(SYSDATE(),INTERVAL -10 DAY) and SYSDATE();

2.MySQL获得当前日期+时间(date + time)函数sysdate() :
sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值
举例:
select now(), sleep(3) ,now();
在这里插入图片描述
在这里插入图片描述
在项目中的应用有

<insert id="insert" parameterType="com.apollo.model.Transfer">
    insert into t_transfer (id, cargo_id, operator_id, 
      instorage_cargo_id, company_id, from_id, 
      to_id, quantity, from_warehouse_id, 
      to_warehouse_id, create_time)
    values (#{id,jdbcType=INTEGER}, #{cargoId,jdbcType=INTEGER}, #{operatorId,jdbcType=INTEGER}, 
      #{instorageCargoId,jdbcType=INTEGER}, #{companyId,jdbcType=INTEGER}, #{fromId,jdbcType=INTEGER}, 
      #{toId,jdbcType=INTEGER}, #{quantity,jdbcType=INTEGER}, #{fromWarehouseId,jdbcType=INTEGER}, 
      #{toWarehouseId,jdbcType=INTEGER},sysdate())
  </insert>

3.mysql日期和字符相互转换方法
按照指定日期或时间显示格式 输出日期或日期时间
date_format(date,’%Y-%m-%d’) ————–>oracle中的to_char();

按照指定日期或时间显示格式 将字符串转换为日期或日期时间类型
str_to_date(date,’%Y-%m-%d’) ————–>oracle中的to_date();

符号含义
%a缩写星期名
%b缩写月名
%c代表月, 格式为(1……12)
%D带有英文前缀的月中的天
%d代表月份中的天数,格式为(00……31)
%e代表月份中的天数, 格式为(0……31)
%f微秒
%H代表小时,格式为(00……23)
%h代表 小时,格式为(01……12)
%I代表小时,格式为(01……12)
%i代表分钟, 格式为(00……59) 【只有这一个代表分钟,大写的I 不代表分钟代表小时】
%j年的天(001~366)
%k小时(0~23)
%l小时(1~12)
%M月名
%m月,数值(00~12)
%pAM或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 位

举例:

select str_to_date(‘09/01/2009’,’%m/%d/%Y’)

select str_to_date(‘20140422154706’,’%Y%m%d%H%i%s’)

select str_to_date(‘2014-04-22 15:47:06’,’%Y-%m-%d %H:%i:%s’)
date_format(create_time,'%Y-%m-%d %H:%i:%s') as createTime
当前时间按月-日 时:分:秒显示:
SELECT DATE_FORMAT(NOW(),'%m-%d %h:%i %p')
FROM dual;         
-->'02-09 06:00 PM'
当前时间按 年-月-日 时:分:秒 AM/PM显示:
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %h:%i:%s %p') FROM dual; 
-->'2017-02-09 06:00:35'
当前时间按 年 周 日 时:分:秒显示:
SELECT DATE_FORMAT(NOW(),'%Y %b %d %T') FROM dual;
 -->'2017 Feb 09 18:04:13'

4.DATEDIFF()函数的用法
DATEDIFF() 函数返回两个日期之间的时间
语法:DATEDIFF(datepart,startdate,enddate)
在这里插入图片描述
在这里插入图片描述
在项目中的应用

<select id="operatorStockInfo" resultType="java.util.HashMap">
  select id,cargo_id AS cargoId,extant_quantity AS num ,company_id AS companyId,tenant_id as tenantId,warehouse_id AS warehouseId,location_id AS locationId,produce_date AS produceDate,DATEDIFF(SYSDATE(),create_time) AS inTime from t_cargo_instorage where extant_quantity >0
  <if test="cargoId !=null">
  and cargo_id =#{cargoId}
  </if>
  <if test="tenantId !=null">
  and tenant_id =#{tenantId}
  </if>
  <if test="companyId !=null">
  and company_id =#{companyId}
  </if>
  <if test="warehouseId !=null">
  and warehouse_id =#{warehouseId}
  </if>
  <if test="locationId !=null">
  and location_id =#{locationId}
  </if>
  group by id,cargo_id,company_id,warehouse_id,location_id,produce_date,create_time order by produce_date, create_time  
  </select>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值