数据库两时间类型相减_sql中两个时间类型相减得到的值
今天有人把数据库两个time类型的字段查出来并做了减法,得到一个长形的数字。这个数字是什么?
首先在数据库里建立一张test表(mysql的数据库)
CREATE TABLE `NewTable` (
`id` int(10) NOT NULL AUTO_INCREMENT ,
`time1` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP ,
`time2` timestamp NULL DEFAULT NULL ,
PRIMARY KEY (`id`)
)
然后录入两条数据,用如下语句查询
SELECT time2,time1,time2-time1 FROM `test`;
查询结果如下,结论是这个差值1的单位貌似是秒。
2012-05-15 19:02:172012-05-15 19:02:161
把time1和time2的类型改成date。这个结果的单位是0.
把time1和time2的类型改成datetime,这个结果如下,貌似单位还是秒。
2012-05-15 19:02:16
2012-05-15 19:02:17
-1.000000
今天遇到的数字结果不确定的情形并没有复现,难道数据库是因为数据库的类型是oracle?
先记到这里吧,这个时间减法还是不要乱用。mysql有计算时间差的函数datediff(),我们测试一下
SELECT time2,time1,time2-time1,DATEDIFF(time2,time1) FROM `test`;
得到结果如下:
2012-05-15 19:02:16
2012-05-15 19:02:17
-1.000000
0
结果居然是0...自己猜了一下,原来还有timediff() 这个函数,再重新测试一下:
SELECT time2,time1,time2-time1,TIMEDIFF(time2,time1) FROM `test`;
这次的结果就对了,结果的单位是秒
2012-05-15 19:02:16
2012-05-15 19:02:17
-1.000000
-00:00:01
好吧,数据库这边要多熟悉几个时间函数。在记一个now()函数的用法。now()用来获取当前时间,返回的是一个秒为单位的时间,但是返回时+0,这是就是一个串了,很有意思。
select NOW(),NOW()+0;
返回的结果,可以用他来获取一个串作为ID也不错嘛。
2012-05-15 19:20:44
20120515192044.000000
再来两个函数,今天计算最近七天的记录是用到的一个函数。date_add()和date_sub()
select DATE_ADD(now(), Interval 1 month);
SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH);
返回的结果如下,后面的差值是可以变的。
2012-05-15 19:27:47
2012-04-15 19:27:47
2012-06-15 19:27:47
后面的差值我偷个懒,上网摘了一下,没做试验
SECOND 秒 SECONDS
MINUTE 分钟 MINUTES
HOUR 时间 HOURS
DAY 天 DAYS
MONTH 月 MONTHS
YEAR 年 YEARS
MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS"
HOUR_MINUTE 小时和分钟 "HOURS:MINUTES"
DAY_HOUR 天和小时 "DAYS HOURS"
YEAR_MONTH 年和月 "YEARS-MONTHS"
HOUR_SECOND 小时, 分钟, "HOURS:MINUTES:SECONDS"
DAY_MINUTE 天, 小时, 分钟 "DAYS HOURS:MINUTES"
DAY_SECOND 天, 小时, 分钟, 秒 "DAYS HOURS:MINUTES:SECONDS"
本来在java上做了一个实验。也贴出来吧。
public static void main(String[] args) {
Calendar calendar=new GregorianCalendar(2012, 5, 10, 21, 12,44);
Calendar calendar2=new GregorianCalendar(2012,5, 10, 21, 12,43);
System.out.println(calendar.getTimeInMillis()-calendar2.getTimeInMillis());
}
这个结果是1000,单位是毫秒。
/**
*20120522 补充
*/
今天遇到一个问题,oracle里,一个字段是date类型,怎么找再某天之后的记录。
用dateColumn>to_date('2012-05-02','yyyy-mm-dd');
如果字段是timestamp类型时,同样可以,最开始用的是相减大于0的写法,结果报错了。
总结一下,mysql中时间相减好像和函数没有什么区别,差值和字段类型有关。没有出现下午提到的不知道数据的现象。另外要熟悉几个时间函数。java里出来时间的函数为calendar,另外simpledateformate和date也很常用。
数据库两时间类型相减_sql中两个时间类型相减得到的值相关推荐
- 两种方法求解 正数数组中 两个数相减 的最大值
一,问题描述 给定一个正数数组arr(即数组元素全是正数),找出该数组中,两个元素相减的最大值,其中被减数的下标不小于减数的下标. 即求出: maxValue = max{arr[j]-arr[i] ...
- 时间转年月日_编程中常见的时间格式
时间格式 前端和后端时经常会遇到各种各样的时间格式,这些格式在编写程序的时候都需要去使用不同的处理方式,这里集中写一下. 先说一下各种不同的时间格式. 类型名 格式 说明 ISO 8601 一般:20 ...
- 两个byte数组拼接_java中两个byte数组实现合并的示例
java中两个byte数组实现合并的示例 今天在于硬件进行交互的过程中,要到了了需要两个数组进行合并,然后对数组进行反转和加密操作,以下是两个byte数组合并的方法. /** * * @param d ...
- python中表示空类型的是_python中什么表示空类型
python中什么表示空类型? python中None表示空类型.表示该值是一个空对象,空值是Python里一个特殊的值,用None表示.None不能理解为0,因为0是有意义的,而None是一个特殊的 ...
- Server服务器修改时间,如何在 Windows Server 中配置权威时间服务器
Windows 包含 W32Time,它是 Kerberos 身份验证协议所需的时间服务工具.Windows 时间服务的目的是确保组织中运行 Microsoft Windows 2000 或更高版本的 ...
- python映射类型-什么是python中唯一的映射类型
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可 ...
- c# 整数类型转byte_C#中数据类型的整数类型
c# 整数类型转byte Here is the list of the built-in integral types of data types in C#, sbyte, byte, char, ...
- 网页中加入当前时间html,如何在网页中加入当前时间的代码
首先在body区域加入:οnlοad="showtime()" 然后在需要显示时间的地方加入: 或者将id="clock"加入到其他标签中 最后在网页中加入以下 ...
- 如何在计算机查找类型文件类型,怎样在电脑中查找某一类型文件?比如查 txt...
怎样在电脑中查找某一类型文件?比如查 txt以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 怎样在电脑中查找某一类型文件 ...
最新文章
- asp.net模糊查询存储过程
- C# hashtable
- SQL注入(SQL Injection)
- java swing简介
- 第四届 AI City 挑战赛 @ CVPR 2020 开始啦!
- 生活中的数学 —— 操场几何学
- 二线制和四线制传感器的区别_消防系统的总线制和二线制什么区别?
- 20191221每日一句
- 信息安全-工控安全需求分析与安全保护工程
- 在线QuartzCron定时任务表达式在线生成
- leaflet加载谷歌影像地图、天地图影像地图、天地图影像注记
- linux icmp 时间戳过滤,ICMP-linux c 时间戳请求功能实现
- MyBatis的优点和缺点
- 微信发红包测试点整理
- 百度大脑iOCR助力财务报销智能化,省时省力
- 计算机的音乐怎样弹生日快乐,5 分钟让你学会用吉他弹《生日快乐》歌
- pid是滞后超前校正_如何理解超前补偿、滞后补偿、超前滞后补偿?
- 小练习使用html 中table表格 实现个人简历
- 转:C++读取EOF文件
- 大数据开发,就要掌握哪些技术?