Mysql取数中遇到的问题

问题一:想要获取特定时间段的数据

一开始我使用下面的语句来获取过去一小时内发生的数据,注意这里由于列名中有中文,所以要打上反引号(键盘左上角)。

SELECT 
`时间戳`,`列名1`,`列名2`
 FROM
 table_name
 WHERE
DATE(`时间戳`)<=NOW() AND DATE(`时间戳`)>=SUBDATE(NOW(),INTERVAL 1 HOUR);

运行上述sql语句后没有返回任何结果,当我把时间跨度调到12小时,即:

SELECT 
`时间戳`,`列名1`,`列名2`
 FROM
 table_name
 WHERE
DATE(`时间戳`)<=NOW() AND DATE(`时间戳`)>=SUBDATE(NOW(),INTERVAL 12 HOUR);

结果Mysql给我返回了前一天从0点到24点的数据。
一开始我以为是时间类型的数据不能用’<’’>'号来比较,于是我换成了between,即
运行上述sql语句后没有返回任何结果,当我把时间跨度调到12小时,即:

SELECT 
`时间戳`,`列名1`,`列名2`
 FROM
 table_name
 WHERE
DATE(`时间戳`) BETWEEN DATE(`时间戳`)>=SUBDATE(NOW(),INTERVAL 12 HOUR) AND NOW();

结果仍然是前一天从0点到24点的数据。
后来尝试着把DATE(时间戳)改成时间戳,发现work了。即

SELECT 
`时间戳`,`列名1`,`列名2`
 FROM
 table_name
 WHERE
`时间戳` BETWEEN DATE(`时间戳`)>=SUBDATE(NOW(),INTERVAL 12 HOUR) AND NOW();

思考

出现这种情况的原因我想可能是因为我的数据库中时间戳这一列的类型本来就是datetime类型的,再用DATE()进行转换会出现奇怪东西。

问题二:待续。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值