免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3869 | 回复: 6
打印 上一主题 下一主题

如何比较时间前后 ? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-04 14:57 |只看该作者 |倒序浏览
以datetime类型存储的时间,如何在查找的时候比较时间前后?

论坛徽章:
0
2 [报告]
发表于 2009-06-04 15:10 |只看该作者
建议用时间戳来保存时间类型的值。要不然DATETIME字符串存储的性能可能满足不了您的需求。

论坛徽章:
0
3 [报告]
发表于 2009-06-04 15:28 |只看该作者
timestamp

论坛徽章:
0
4 [报告]
发表于 2009-06-04 17:15 |只看该作者
原帖由 bs 于 2009-6-4 15:28 发表
timestamp

你名字咋这么短的呢。

恩,用时间戳来比较把,日期总归看起来不是很爽

论坛徽章:
0
5 [报告]
发表于 2009-06-04 22:24 |只看该作者
上面几位有点创意好不,谁说 DATETIME 不能比较了,大于小于直接比就可以了。不过,每个 DATETIME 占用 8个字节,除零值外支持的范围为'1000-01-01 00:00:00'到'9999-12-31 23:59:59'(超出此范围尽管可能工作,但没有保证);每个 TIMESTAMP 占用 4个字节,除零值外在大多数系统下一般为1970年到2037年,即有时间窗口问题,自己去衡量使用了。

MySQL 4.1以后,MySQL服务器也可以以MAXDB模式运行。当服务器以该模式运行时,TIMESTAMP与DATETIME相等。也就是说,如果创建表时服务器以MAXDB模式运行,TIMESTAMP列创建为DATETIME列。结果是,该列使用DATETIME显示格式,有相同的值范围,并且没有自动对当前的日期和时间进行初始化或更新。

要想启用MAXDB模式,在启动服务器时使用--sql-mode=MAXDB服务器选项或在运行时通过设置全局sql_mode变量将SQL服务器模式设置为MAXDB:

mysql> SET GLOBAL sql_mode=MAXDB;
客户端可以按照下面方法让服务器为它的连接以MAXDB模式运行:

mysql> SET SESSION sql_mode=MAXDB;

[ 本帖最后由 sunnyfun 于 2009-6-4 22:40 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2009-06-05 10:22 |只看该作者
原帖由 sunnyfun 于 2009-6-4 22:24 发表
上面几位有点创意好不,谁说 DATETIME 不能比较了,大于小于直接比就可以了。不过,每个 DATETIME 占用 8个字节,除零值外支持的范围为'1000-01-01 00:00:00'到'9999-12-31 23:59:59'(超出此范围尽管可能工作, ...


很好很强大

论坛徽章:
0
7 [报告]
发表于 2009-06-08 20:03 |只看该作者
时间差函数datediff(时间量1,时间量2)
比如
select fbirthday,fregday,datediff(fbirthday,fregday) from t_person;

我的空间有mysql时间方面的函数
hi.baidu.com/tonghuasanren
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP