最近同事用到了这类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中将时间戳转为格式化日期后进行比较日期的方法相关推荐

  1. el-date-picker 最多只能选中一个月 选中第一个日期后 第二个日期给出可选范围限制

    效果: 选中2020年5月13日之后 前面4月13日到5月13日可选 后面5月13日到6月13日可选 <el-date-pickerv-model="value2"type= ...

  2. SQL Server 2008 修改安装路径后安装出错的解决方法

    1.安装时如果修改安装路径后报错 例如想把"C:\Program Files\Microsoft SQL Server" 修改为"D:\Program Files\Mic ...

  3. mysql 日期减法_日期格式处理的几种方法

    转眼2021都快过了一个月了,不知道大家是否在写日期的时候还是会不自觉地写下"2020-XX-XX"? 日常的工作和生活中,日期的书写随处可见,对分析师而言,日期和时间的处理更如一 ...

  4. java时间日期工具类_java日期处理工具类

    java日期处理工具类 import java.text.DecimalFormat; import java.text.ParsePosition; import java.text.SimpleD ...

  5. EXCEL中将时间戳转换为日期格式

    EXCEL中将时间戳转换为日期格式 从linux系统中获取的时间戳信息通常为s,将其转换的公式为: =TEXT((E1+83600)/86400+70365+19,"yyyy-mm-dd h ...

  6. js 时间戳转为日期格式

    什么是Unix时间戳(Unix timestamp): Unix时间戳(Unix timestamp),或称Unix时间(Unix time).POSIX时间(POSIX time),是一种时间表示方 ...

  7. 将 时间戳 转为 任意日期格式

    1.将 时间戳 转为 任意日期格式 let nowTime = Date.now() //获取当前日期时间戳console.log(nowTime); //1655106174167const for ...

  8. Java日期类 util.Date sql.Date Calendar LocalDateTime 格式化 DateFormat DateTimeFormatter

    java 日期类 java.util.Date Date有两个附加功能. 它允许将日期解释为年,月,日,小时,分钟和第二个值. 它还允许格式化和解析日期字符串. 但这些功能的API不适合国际化. 从J ...

  9. SQL中将两个日期进行相减得到分钟或者秒

    1.SQL中将两个日期进行相减得到分钟或者秒 代码如下(示例): TIMESTAMPDIFF(MINUTE,createTime,endTime)//endTime减去createTine后的到分钟, ...

最新文章

  1. JAVA正则表达式:Pattern类与Matcher类详解(转)
  2. python中类型错误、计数不采用关键字的错误怎么改_Learning/Python-面试问题.md at master · yxxyyx1314/Learning · GitHub...
  3. 全球首届“AI球球大作战:Go-Bigger多智能体决策智能挑战赛”开启
  4. Elixir 初尝试 5 -- 遇见Actor
  5. (计算机组成原理)第六章总线-第三节:总线操作和定时(同步定时和异步定时)
  6. 人生时间计算器_卡西欧计算器见证你与时间赛跑,计算人生,把握人生!
  7. wget命令详解_嵌入式学习之 Wget 命令详解
  8. 《转》SAP RM07扩展
  9. Sleep 方案解决主备延迟
  10. DeepFaceLab 新手入门教程
  11. 五个最佳媒体格式转换器
  12. python利用百度翻译器,爬取需要翻译的关键字
  13. fcitx5 使用搜狗皮肤
  14. 珍惜生命,战胜自己,活出精彩
  15. 餐厅自助点餐系统测试
  16. LINUX SHELL宝塔判断域名变化IP脚本
  17. 华为的网络模拟器eNSP
  18. iOS在图片上添加文字或图片
  19. Mavlink协议概要
  20. PyTorch 简介

热门文章

  1. 计算机投影仪的作用是什么,投影仪电脑接口类型及其用途详细介绍【图】
  2. endp 汇编start_汇编语言程序设计:[20]汇编计算器
  3. MFC控件关联变量总结(EDIT编辑框)
  4. 用Python写一首中秋Rap
  5. 单词Uranolite陨石uranolite英语
  6. Spacedesk软件使用
  7. JSP+SQL实现留言功能(含留言回复功能),附源码
  8. 电脑显示没有被指定在上运行_电脑出现“损坏的图像”窗口提示dll没有被指定在Windows上运行如何解决...
  9. 卸载python2.7_系统卸载器(Uninstall Tool)
  10. C语言:L2-021 点赞狂魔 (25 分)