关于mysql时间戳存储过程用法

本文详细介绍了如何在MySQL中使用时间戳查询昨日和今日的数据,包括构造SQL语句的方法及封装存储过程,以便于日常调用。同时分享了在参数类型指定上的常见错误及其解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查询昨日数据

以今日2019-8-7为例,则需获取昨日到今日凌晨时间戳,1565020800 - 1565107200 完整日期格式为2019-8-6 0:00:00 - 2019-8-7 0:00:00
在MySQL中使用时间戳时需要使用函数UNIX_TIMESTAMP()
则完整的SQL语句为:

SELECT * FROM 表名 
		WHERE 创建时间字段
			BETWEEN UNIX_TIMESTAMP(CAST(SYSDATE()AS DATE) - INTERVAL 1 DAY) 
				AND 
					UNIX_TIMESTAMP(CAST(SYSDATE()AS DATE))

查询今日数据

以今日2019-8-7为例,则需获取时间戳范围为 1565107200 - 1565193600,完整的时间格式为2019-8-7 0:00:00 - 2019-8-8 0:00:00

SELECT * FROM 表名 
	WHERE 创建时间字段
		BETWEEN UNIX_TIMESTAMP(CAST(SYSDATE()AS DATE)) 
			AND UNIX_TIMESTAMP(CAST(SYSDATE()AS DATE) + INTERVAL 1 DAY)

为方便以后调用,封装为存储过程,便于使用

CREATE PROCEDURE getDataByTableName(IN flg INT,IN tb VARCHAR(255))
BEGIN
	IF(flg = 1) THEN
		SET @sql = CONCAT('SELECT * FROM ',tb,' WHERE create_time BETWEEN UNIX_TIMESTAMP(CAST(SYSDATE()AS DATE) - INTERVAL 1 DAY) 
		AND UNIX_TIMESTAMP(CAST(SYSDATE()AS DATE))');
	END IF;
	IF(flg = 2) THEN
		SET @sql = CONCAT('SELECT * FROM ',tb,' WHERE create_time BETWEEN UNIX_TIMESTAMP(CAST(SYSDATE()AS DATE)) 
		AND UNIX_TIMESTAMP(CAST(SYSDATE()AS DATE) + INTERVAL 1 DAY)');
	END IF;
		PREPARE stmtt FROM @sql;
		EXECUTE stmtt;
END;
参数意义
flg标识是昨天还是今天
tb表名,可以是视图名称

记踩坑经历,在IN 参数后未指明类型大小报错,参考一些资料都是未声明类型大小,挣扎了很久,终于ok了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值