在sql和oracle中,有没有计算两个日期之间的行大小的方法?

在sql和oracle中,有没有计算两个日期之间的行大小的方法?,sql,sql-server,Sql,Sql Server,我想计算两个日期之间的行大小。有一个字段存储插入记录的日期 我可以用它来计算这两个日期之间行的总字节大小吗?如果是,怎么做?欢迎任何例子或建议 我正在使用SQL Server,所以让我们一起编写整个脚本: -- Determine how many rows you got between your dates DECLARE @numbrows int; DECLARE @byteNumber int; set @numbRows = (select count(*) from YOUR

我想计算两个日期之间的行大小。有一个字段存储插入记录的日期

我可以用它来计算这两个日期之间行的总字节大小吗?如果是,怎么做?欢迎任何例子或建议


我正在使用SQL Server,所以让我们一起编写整个脚本:

-- Determine how many rows you got between your dates

DECLARE @numbrows int;
DECLARE @byteNumber int; 

set @numbRows = (select count(*) from YOURTABLE
where DATEPARAMETER >= Convert(datetime, '2016-01-01' )
      AND DATEPARAMETER <= Convert(datetime, '2016-12-31' ));

select @numbRows as ThisManyRowsBetweenDates

-- leverage sys.dm_db_index_physical_stats to get average number of bytes for a row in your target table

set @byteNumber = (select TOP 1 avg_record_size_in_bytes FROM sys.dm_db_index_physical_stats
                  (DB_ID(N'YOURDATABASENAME'), OBJECT_ID(YOURTABLE'), NULL, NULL , 'DETAILED'));
select @byteNumber AS ThisManyBytesOnAveragePerRow 

-- rows * average size or rows = estimation of how many bytes you are using
select @numbRows * @byteNumber AS EstimationOfTotalBytesUsed
您需要在以下位置进行编辑:

你的桌子-你工作的桌子

DATEPARAMETER—保存要筛选的日期的参数

日期文字“2016-01-01”和“2016-12-31”注意年-月-日格式

YOURDATABASENAME-不带shema的数据库名称


您所说的大小到底是什么意思?这是针对MySQL、Oracle还是Microsoft SQL Server的?对于大小,您是指实际大小(以字节或行数为单位)?行大小是什么?字节?行数?有什么完全不同的吗?是的,行计数的实际大小(字节)。谢谢你的回答。根据您刚才发布的查询结果,我想知道是否有办法获得记录/行的字节大小。假设您的查询返回了16,我想知道16的大小(以字节为单位)。实现这一点需要使用变量。这将取决于您使用的DBMS。请在上面进行编辑。我用硬编码的值在我的数据库上测试了它,它工作了@@version=Microsoft SQL Server 2014-12.0.2269.0 X64Thanks@dantehesmith。是的,它工作了,它返回估计值。如果我使用sql developer为oracle执行此操作,是否遵循类似的步骤?带日期的选择可能是相同的,但对于OracleDB,每行的平均字节数肯定不是以相同的方式执行的。不幸的是,我没有在这台电脑上安装OracleDB来试用它。但想法是一样的,只是谷歌如何获得一个表的平均行字节。此外,Oracle使用PL SQL而不是T SQL,因此变量的声明和设置可能不同,但原理是相同的。
DECLARE @byteNumberJ int;
set @byteNumberJ = (select TOP 1 avg_record_size_in_bytes FROM sys.dm_db_index_physical_stats
              (DB_ID(N'Your DB'), OBJECT_ID('Your Table '), NULL, NULL , 'DETAILED'));
SELECT DATENAME(mm,CREATED) MONTH, COUNT(*) * @byteNumberJ /1024 /1024 As Byte, count (*) RowCounts
FROM YourTable
where YEAR(CREATED) =2017
Group BY DATENAME(mm,CREATED)



--i tried this and it returns the month and the estimated size too as 
--well as the Row count for each month.