项目小锦囊——mysql时间篇

mysql时间

计算两个时间段的时长

TIMESTAMPDIFF(MINUTE,开始时间,结束时间)

MINUTE: 参数是确定的结果的单位 分钟

他的参数有:
MICROSECOND,SECOND,MINUTE,HOUR,DAY,WEEK,MONTH,QUARTER,YEAR

TIMESTAMPDIFF(MINUTE,开始时间,结束时间) AS time_length
//注意 如果时间相减没有一天会为0 就需要格式化
TIMESTAMPDIFF(MINUTE,DATE_FORMAT(开始时间,'%Y-%m-%d' ),DATE_FORMAT(结束时间,'%Y-%m-%d' ))

修改时间格式

DATE_FORMAT(时间,格式)
他的格式有:’%Y-%m-%d’ 年-月-日 ,’%Y-%m-%d %H:%i:%%s’ 年-月-日 时:分:秒

DATE_FORMAT(时间,'%Y-%m-%d') `date`
字符串拼接

CONCAT_WS(separator, str1, str2, …) 和 CONCAT( str1, str2, …) 都可以字符串拼接

separator是用来指定分隔符。需要注意的是分隔符不能为null,如果为null,则返回结果为null。

CONCAT_WS('',province.`name`,city.`name`,area.`name`,dr.`name`,drc.`name`,d.address)  address
最大值和最小值

GREATEST(value1, value2, …);
LEAST(N1,N2,N3,N4,…)

SELECT GREATEST(10, 20, 30),  -- 30
       LEAST(10, 20, 30); -- 10
经纬度计算距离

113.58301 这是用户1 的经度,23.30943 这是用户1的纬度
c.longitude 这是用户2 的经度,c.latitude 这是用户2的纬度

(2 * 6378.137 * ASIN(	SQRT(POW( SIN( PI( ) * ( 113.58301 - c.longitude ) / 360 ), 2 ) + COS( PI( ) * 23.30943/ 180 ) * COS(  c.latitude * PI( ) / 180 ) * POW( SIN( PI( ) * ( 23.30943- c.latitude ) / 360 ), 2 )))) AS distance
添加/减 天数

CURDATE() 获取当前的年月日
DATE_ADD(CURDATE(), INTERVAL 3 DAY) 在当前日期加3天

DATE_SUB(CURDATE(), INTERVAL 7 DAY) 当前日期减7天

select DATE_ADD(CURDATE(), INTERVAL 3 DAY)

select DATE_SUB(CURDATE(), INTERVAL 7 DAY)
日期加减

DATEDIFF(datepart , startdate , enddate)

datepare值:year | quarter | month | week | day | hour | minute | second | millisecond
startdate:开始日期
enddate :结束日期

下面例子中表名为tablename,条件字段名为inputdate

查询今天

SELECT * FROM tablename where DATEDIFF(day,inputdate,GETDATE())=0

查询昨天

SELECT * FROM tablename where DATEDIFF(day,inputdate,GETDATE())=1

查询本周

SELECT * FROM tablename where DATEDIFF(week,inputdate,GETDATE())=0

查询上周

SELECT * FROM tablename where DATEDIFF(week,inputdate,GETDATE())=1

查询本月

SELECT * FROM tablename where DATEDIFF(month,inputdate,GETDATE())=0

查询上月

SELECT * FROM tablename where DATEDIFF(month,inputdate,GETDATE())=1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值