SQL中将时间戳转为格式化日期后进行比较日期的方法
最近同事用到了这类sql,记录如下:
1.首先,数据库表userinfo中,有一个updatetime字段,该字段的格式是bigint(最大长度20),保存的是13位的时间戳,例如:
updatetime1610467200666
2.要在查询时把这个字段转成格式化日期,可以使用from_unixtime()方法,如下:
select from_unixtime(round(updatetime/1000,0)) from userinfo;
这句的意思是先把updatetime/1000,然后使用round()方法转为四舍五入后含有0位小数的bigint,然后使用from_unixtime()方法将bigint转为格式化日期。
使用round并除以1000的意思是,由于数据库中保存的是13位的时间戳,因此要先转成秒,然后再用from_unixtime,否则无法返回正确结果。
返回的结果样例:
//没有加列名,所以列名默认就这么长了
from_unixtime(round(upd...
2021-01-13 00:00:01
2021-01-12 01:00:01
2021-01-11 02:00:01
2021-01-10 03:00:01
...
3.这个格式化日期并不是想要的格式,所以继续用DATE_FORMAT方法,继续转换格式,如下:
select DATE_FORMAT(from_unixtime(round(updatetime/1000,0)),'%Y-%m-%d') from userinfo;
这次增加了DATE_FORMAT方法,注意使用的是'%Y-%m-%d',大写的Y,所以结果如下:
DATE_FORMAT(from_unix...
2021-01-13
2021-01-11
...
如果使用'%y-%m-%d',小写的y,则结果如下:
DATE_FORMAT(from_unix...
21-01-13
21-01-11
...
4.明白了如何把时间戳转为格式化日期后,就进行最后一步、实现需求了。
例如,查询最近2天的数据,updateTime是时间戳,不太好比较时,可以用下方的sql:
select curdate() - interval 3 day, DATE_FORMAT(from_unixtime(round(a.updatetime/1000,0)), a.*
from userinfo a
where DATE_FORMAT(from_unixtime(round(a.updatetime/1000,0)),'%Y-%m-%d') > (curdate() - interval 3 day);
这句sql中,curdate() - interval 3 day 得到的结果是,当前时间减去3天的时间;
然后查询字段updatetime(时间戳格式的时间)大于前3天的数据,也就是最近2天的时间;
开头例子中只用a.*即可,多余的2个是为了显示结果方便一些。
注意,date_format()方法中,要使用'%Y-%m-%d',大写Y,然后日期格式才正确,才能正确使用大于小于号比较时间!
(如果使用小写y,'%y-%m-%d',会是【21-01-13 > 2021-01-10】的比较,会存在问题)
结果样例如下:
//第一行是列名,因为没有起,所以都是默认的列名;省略不重要的列
curdate()-interval 3 day DATE_FORMAT(from_unix... username phone updatetime
2021-01-10 2021-01-13 小明 188... 1610467200666
5.如果要在sql中将格式化日期转为时间戳,可以使用UNIX_TIMESTAMP()方法,简述如下:
数据库表userinfo中,synctime字段,格式为datetime。
使用sql,可以转化为长度10位的时间戳,意思是单位为秒。
select UNIX_TIMESTAMP(synctime) from userinfo;
结果样例如下:
//第一行是列名,第二行是结果
UNIX_TIMESTAMP(syncti...
1610478685
......
SQL中将时间戳转为格式化日期后进行比较日期的方法相关推荐
- el-date-picker 最多只能选中一个月 选中第一个日期后 第二个日期给出可选范围限制
效果: 选中2020年5月13日之后 前面4月13日到5月13日可选 后面5月13日到6月13日可选 <el-date-pickerv-model="value2"type= ...
- SQL Server 2008 修改安装路径后安装出错的解决方法
1.安装时如果修改安装路径后报错 例如想把"C:\Program Files\Microsoft SQL Server" 修改为"D:\Program Files\Mic ...
- mysql 日期减法_日期格式处理的几种方法
转眼2021都快过了一个月了,不知道大家是否在写日期的时候还是会不自觉地写下"2020-XX-XX"? 日常的工作和生活中,日期的书写随处可见,对分析师而言,日期和时间的处理更如一 ...
- java时间日期工具类_java日期处理工具类
java日期处理工具类 import java.text.DecimalFormat; import java.text.ParsePosition; import java.text.SimpleD ...
- EXCEL中将时间戳转换为日期格式
EXCEL中将时间戳转换为日期格式 从linux系统中获取的时间戳信息通常为s,将其转换的公式为: =TEXT((E1+83600)/86400+70365+19,"yyyy-mm-dd h ...
- js 时间戳转为日期格式
什么是Unix时间戳(Unix timestamp): Unix时间戳(Unix timestamp),或称Unix时间(Unix time).POSIX时间(POSIX time),是一种时间表示方 ...
- 将 时间戳 转为 任意日期格式
1.将 时间戳 转为 任意日期格式 let nowTime = Date.now() //获取当前日期时间戳console.log(nowTime); //1655106174167const for ...
- Java日期类 util.Date sql.Date Calendar LocalDateTime 格式化 DateFormat DateTimeFormatter
java 日期类 java.util.Date Date有两个附加功能. 它允许将日期解释为年,月,日,小时,分钟和第二个值. 它还允许格式化和解析日期字符串. 但这些功能的API不适合国际化. 从J ...
- SQL中将两个日期进行相减得到分钟或者秒
1.SQL中将两个日期进行相减得到分钟或者秒 代码如下(示例): TIMESTAMPDIFF(MINUTE,createTime,endTime)//endTime减去createTine后的到分钟, ...
最新文章
- JAVA正则表达式:Pattern类与Matcher类详解(转)
- python中类型错误、计数不采用关键字的错误怎么改_Learning/Python-面试问题.md at master · yxxyyx1314/Learning · GitHub...
- 全球首届“AI球球大作战:Go-Bigger多智能体决策智能挑战赛”开启
- Elixir 初尝试 5 -- 遇见Actor
- (计算机组成原理)第六章总线-第三节:总线操作和定时(同步定时和异步定时)
- 人生时间计算器_卡西欧计算器见证你与时间赛跑,计算人生,把握人生!
- wget命令详解_嵌入式学习之 Wget 命令详解
- 《转》SAP RM07扩展
- Sleep 方案解决主备延迟
- DeepFaceLab 新手入门教程
- 五个最佳媒体格式转换器
- python利用百度翻译器,爬取需要翻译的关键字
- fcitx5 使用搜狗皮肤
- 珍惜生命,战胜自己,活出精彩
- 餐厅自助点餐系统测试
- LINUX SHELL宝塔判断域名变化IP脚本
- 华为的网络模拟器eNSP
- iOS在图片上添加文字或图片
- Mavlink协议概要
- PyTorch 简介
热门文章
- 计算机投影仪的作用是什么,投影仪电脑接口类型及其用途详细介绍【图】
- endp 汇编start_汇编语言程序设计:[20]汇编计算器
- MFC控件关联变量总结(EDIT编辑框)
- 用Python写一首中秋Rap
- 单词Uranolite陨石uranolite英语
- Spacedesk软件使用
- JSP+SQL实现留言功能(含留言回复功能),附源码
- 电脑显示没有被指定在上运行_电脑出现“损坏的图像”窗口提示dll没有被指定在Windows上运行如何解决...
- 卸载python2.7_系统卸载器(Uninstall Tool)
- C语言:L2-021 点赞狂魔 (25 分)