- 浏览: 231530 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
lizhiyu211:
哦,那看来性能确实不行,学习了。
记得还有一次是这么用的,是一 ...
ORACLE/MSSQL随机取一条记录方法 -
lizhiyu211:
string2020 写道直接执行 xhost + 就行了
恩 ...
linux下启动dbca或netmgr类的图形界面报错 -
Aaron5:
Aaron5 写道lizhiyu211 写道Aaron5 写道 ...
ORACLE/MSSQL随机取一条记录方法 -
Aaron5:
lizhiyu211 写道Aaron5 写道这个oracle的 ...
ORACLE/MSSQL随机取一条记录方法 -
string2020:
直接执行 xhost + 就行了
linux下启动dbca或netmgr类的图形界面报错
日期维度表:
SQL计算上月最后一天、上季度最后一天、上年最后一天、到季初天数、到年初天数、当前日期是季度中第几个月、当前日期是季度中第几天等
CREATE PROCEDURE sp_sz_tjrq(
@startdate char(8), -- 开始日期
@years integer -- 生成几年的数据
)
as
begin
-- 定义局部变量
declare @dt_begintime datetime -- 开始时间
declare @dt_endtime datetime -- 结束时间
declare @i_loopcount integer -- 循环次数
declare @c_sxrq char(8) -- 系统上线日期
declare @c_enddate char(8) -- 结束日期
declare @i_count integer -- 循环变量
declare @c_tjrq char(8) -- 统计日期
declare @c_year char(4) -- 日期年
declare @c_month char(2) -- 日期月
declare @c_day char(2) -- 日期日
declare @c_daysofmonth char(2) -- 统计日期
declare @c_daysofseason char(3) -- 月中天数
declare @c_daysofyear char(3) -- 年中天数
declare @c_monthsofseason char(2) -- 季中月数
declare @c_seasonsofyear char(2) -- 年中季数
declare @c_yesterday char(8) -- 上日日期
declare @c_pre_month_lastday char(8) -- 上月月末日期
declare @c_pre_season_lastday char(8) -- 上季季末日期
declare @c_pre_year_lastday char(8) -- 上年年末日期
declare @c_year_start_day char(8) -- 年度起始日期
declare @c_year_on_year char(8) -- 同比日期
-- 初始化变量
select @c_enddate = convert(char(8),dateadd(day,-1,dateadd(year,isnull(@years,5),@startdate)),112)
select @i_loopcount = datediff(day,@startdate,@c_enddate)
select @i_count = 0
if object_id('crmo_sz_rqdz') is null
begin
create table crmo_sz_rqdz(
tjrq char(8) not null primary key,
year char(4) null,
month char(2) null,
day char(2) null,
daysofmonth char(2) null,
daysofseason char(3) null,
daysofyear char(3) null,
monthsofseason char(2) null,
seasonsofyear char(2) null,
yesterday char(8) null,
pre_month_lastday char(8) null,
pre_season_lastday char(8) null,
pre_year_lastday char(8) null,
year_start_day char(8) null,
year_on_year char(8) null)
end
else
begin
truncate table crmo_sz_rqdz
end
while @i_count <= @i_loopcount
begin
-- 获取统计日期值
select @c_tjrq = convert(char(8),dateadd(day,@i_count,@startdate),112)
-- 截取统计日期年份
select @c_year = convert(char,year(@c_tjrq))
-- 截取统计日期月份
select @c_month = convert(char,month(@c_tjrq))
-- 截取统计日期天
select @c_day = convert(char,day(@c_tjrq))
-- 计算统计日期是本月第几天
select @c_daysofmonth = convert(char,day(@c_tjrq))
-- 计算统计日期是本季度第几天
if substring(@c_tjrq,5,2) >= '01' and substring(@c_tjrq,5,2) <= '03'
select @c_daysofseason = datediff(day,convert(datetime,left(@c_tjrq,4)+'0101'),convert(datetime,@c_tjrq))+1
if substring(@c_tjrq,5,2) >= '04' and substring(@c_tjrq,5,2) <= '06'
select @c_daysofseason = datediff(day,convert(datetime,left(@c_tjrq,4)+'0401'),convert(datetime,@c_tjrq))+1
if substring(@c_tjrq,5,2) >= '07' and substring(@c_tjrq,5,2) <= '09'
select @c_daysofseason = datediff(day,convert(datetime,left(@c_tjrq,4)+'0701'),convert(datetime,@c_tjrq))+1
if substring(@c_tjrq,5,2) >= '10' and substring(@c_tjrq,5,2) <= '12'
select @c_daysofseason = datediff(day,convert(datetime,left(@c_tjrq,4)+'1001'),convert(datetime,@c_tjrq))+1
-- 计算统计日期是本年第几天
select @c_daysofyear = convert(char(3),datepart(dy,@c_tjrq))
-- 计算统计日期所在月是本季度第几个月 = 月份除以3取余 如果=0 则 是第三个月 如果不是0余数即为季度中的月数
select @c_monthsofseason = case mod(month(@c_tjrq),3) when 0 then 3 else mod(month(@c_tjrq),3) end
-- 计算统计日期所在季度是本年第几个季度
select @c_seasonsofyear = convert(char,datepart(qq,@c_tjrq))
-- 计算昨天日期
select @c_yesterday = convert(char(8),dateadd(day,-1,@c_tjrq),112)
-- 计算上月最后一天日期
select @c_pre_month_lastday = convert(char(8),dateadd(day,-1,substring(@c_tjrq,1,6)+'01'),112)
-- 计算上季度最后一天 = substring(dateadd(qq,-1,统计日期季度),1,4)+‘季度最后一天’
select @c_pre_season_lastday = convert(char(8),dateadd(qq,-1,@c_tjrq),112)
if datepart(qq,@c_pre_season_lastday) = '1'
select @c_pre_season_lastday = substring(@c_tjrq,1,4)+'0331'
if datepart(qq,@c_pre_season_lastday) = '2'
select @c_pre_season_lastday = substring(@c_tjrq,1,4)+'0630'
if datepart(qq,@c_pre_season_lastday) = '3'
select @c_pre_season_lastday = substring(@c_tjrq,1,4)+'0930'
if datepart(qq,@c_pre_season_lastday) = '4'
select @c_pre_season_lastday = substring(@c_tjrq,1,4)+'1231'
-- 计算上一年最后一天
select @c_pre_year_lastday = convert(char(4),(year(@c_tjrq)-1)) + '1231'
-- 计算年度起始日期 统计日期向前推364天 如果小于系统上线日期那么 起始日期= 系统上线日期
select @c_year_start_day = convert(char(8),dateadd(day,-364,@c_tjrq),112)
-- 同比日期 = 上一年本月的最后一天的日期
select @c_year_on_year = convert(char(8),dateadd(day,-1,(substring(convert(char(8),dateadd(month,-11,@c_tjrq),112),1,6)+'01')),112)
-- 将计算结果插入日期对照表中
insert into crmo_sz_rqdz(tjrq,year,month,day,daysofmonth,daysofseason,daysofyear,monthsofseason,seasonsofyear,yesterday,pre_month_lastday,pre_season_lastday,pre_year_lastday,year_start_day,year_on_year)
values(@c_tjrq,@c_year,@c_month,@c_day ,@c_daysofmonth,@c_daysofseason ,@c_daysofyear,@c_monthsofseason,@c_seasonsofyear,@c_yesterday ,@c_pre_month_lastday,@c_pre_season_lastday ,@c_pre_year_lastday,@c_year_start_day,@c_year_on_year)
select @i_count = @i_count + 1
end
end
GO
发表评论
-
oracle存储过程编译卡死(资源dll锁)
2017-06-02 09:40 1847今天频繁编译一个存储过程时突然编译不 ... -
ORACLE 分析函数
2016-10-14 15:06 0引自 http://blog.csdn.net/haiross ... -
ORA-00376: 此时无法读取文件
2015-05-14 11:45 2321ORA-00376: 此时无法读取文件 4ORA-01 ... -
ORACLE解码/编码URL数据
2015-04-28 10:17 2753utl_url.escape这个方法必须放在一个函数中才能调 ... -
ORACLE数据泵 expdp/impdp使用详解(转)
2015-04-16 18:04 2728ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方 ... -
ORACLE按周统计数据
2015-02-10 18:33 877oracle数据库默认的每周开始日期是周一,日常分析中往往需 ... -
sqlldr参数
2015-01-29 14:56 0有效的关键字: userid -- ORACLE use ... -
oracle 此处不允许序列
2014-11-13 14:04 1855一个插入语句,这样写报错:此处不允许序列 insert ... -
ORACLE检查字符是否为数字
2014-11-13 13:48 778select gid,gname from t_dw_fl ... -
ORACLE巡检后编译失效对象
2014-11-07 09:36 845检查失效对象: select owner,object_ ... -
为什么我的win7 ODBC数据源里没有Oracle的驱动程序
2013-05-30 17:29 3789直接在“控制面板---管理工具----数据源(ODBC)” ... -
亿赛通面试
2013-04-02 11:05 963iostate,netstate概念用途 ... -
SQL去掉重复数据只留一条
2013-02-27 15:13 1365select distinct khh,khjlh,jlrq ... -
linux下启动dbca或netmgr类的图形界面报错
2013-01-25 16:53 3638Xlib: connection to ":0 ... -
Sybase IQ 自定义表备份
2013-01-21 08:59 1913-- 初始化配置表if object_id('t_sz_ba ... -
LINUX top命令结果分析
2012-08-24 10:22 3829top命令是Linux下常用的性能分析工具,能够实时显示系统中 ... -
SYBASE IQ 查看字符集 系统状态
2012-07-17 11:12 3122查看数据库字符集: select db_property(' ... -
mysql存储过程 游标
2012-06-21 12:27 1682create table table1(id int,name ... -
red hat 5 Enterprise 入门
2012-06-04 19:35 0今天想在linux环境下搭建个oracle10G环境方 ... -
oracle OCP认证——准备篇
2012-05-30 11:22 1287本人一直从事数据库开发工作,说白了也就是编写存储过程, ...
相关推荐
以下将详细解释如何使用SQL语句来获取周、月、季、年以及上月、前一天、上一小时的开始和结束日期。 1. **本周** 获取本周的第一天,可以使用`TRUNC`函数结合日期部分'W'或'd'(代表星期)。'd'会返回周内的第一天...
time: 返回的时间点,如果时间点为8点,返回的结束时间为第二天的8点,例如获取8月最后一天的结束时间,以8点计,则返回值为 2022-09-01 07:59:59.997 select dbo.GetDateStartFirstAndLast('-q','s','2022-08-03',...
在SQL中,获取当前月的第一天、最后一天以及计算当前月的总天数是常见的日期操作,这在处理与时间相关的数据时非常有用。以下是如何使用T-SQL(SQL Server的编程语言)来实现这些功能的详细解释: 1. 获取当前月的...
在SQL中进行连续天数查询是一项常见的任务,特别是在数据分析、报表生成或业务监控等领域。这个压缩包文件包含了一个Excel测试数据文件和一个SQL语句文本文件,用于展示如何实现这样的查询。下面,我们将深入探讨...
DB2 计算相差天数(时间),打个比方你要计算2013-10-20到2014-03-01的天数
### SQL工作日计算,只排除周末 在数据库管理和数据分析领域,准确地计算两个日期之间的有效工作日数量是一项非常实用的功能,特别是在需要排除周末(通常指周六和周日)的情况下。这种计算方法对于财务报告、项目...
这条语句使用 `DATEPART` 函数将日期转换为季度,然后比较当前日期的季度减去一个季度以获取上季度的记录。 查询本年记录 MySQL 中,您可以使用以下语句查询本年记录: ```sql SELECT * FROM ht_invoice_...
假设我们需要获取当前日期所在的月份的第一天和最后一天,可以使用以下SQL语句: ```sql SELECT DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0) AS FirstDayOfMonth; ``` 这里解释一下上述语句的含义: - `GETDATE()...
在SQL Server 2000中,日期操作是数据库管理中的常见任务,涉及到日期的提取、转换、比较以及计算等。以下是一些实用的日期操作范例,它们可以帮助你更有效地处理日期相关的查询。 1. **显示本月第一天**: 使用`...
在编程领域,尤其是在数据分析、日程管理或者时间序列分析中,计算两个日期之间的差异并考虑工作日排除节假日和周末是一项常见的任务。C++作为一种强大的系统级编程语言,提供了丰富的库来处理日期和时间操作。本篇...
sql语句得到开始日期和结束日期之间的工作日天数
再例如,计算一个季度的最后一天,可以使用 DateAdd 函数将当前日期加上三个月,然后使用 DateDiff 函数计算出当前日期和下一个季度的第一天之间的天数。 在使用日期计算时,需要注意第一天设置的问题。不同的系统...
首先计算出当前日期距离本周星期一的天数,再根据这个天数加上6天得到本周最后一天的日期,最后通过`DATEADD`返回这一周的最后一天。 这些示例展示了如何利用`DATEADD`和`DATEDIFF`函数进行日期时间的计算,这对于...
本文将详细介绍如何使用SQL语句来获取不同的日期,包括本月天数、上个月的第一天、本周周一以及当日等。 #### 1. 获取上一天的日期 示例代码:`SELECT dateadd(dd,-1,'20100514')` **解释**:此语句用于返回指定...
实现方式:结合闰年判断和月份天数计算,构建出指定月份的最后一天的日期对象。 应用:在财务会计、月度统计分析中,经常需要知道每个月的最后一天,以便进行截止日期的设定。 ### 7. 计算上个月的第一天 函数原型...
在SQL中,计算两个日期之间的差值是一种常见的需求,特别是在涉及到日期跨度的业务逻辑处理时。本文将详细介绍如何使用SQL来实现计算两个日期相差多少年、月、日的方法,并通过具体的示例代码来帮助理解这一过程。 ...
本项目是一个使用ASP.NET+C#编写的源码,其主要功能是计算两个日期之间的总天数以及工作日的天数。这个功能在很多实际场景下都有应用,例如财务管理、人力资源规划或项目进度管理。 首先,让我们深入理解ASP.NET...
1. 如果两个日期在同一周内,只需计算从开始日期到结束日期之间的天数,减去开始日期是周末的天数,再加上结束日期是工作日的天数。 2. 如果两个日期跨越了多个周,首先计算跨越的完整周数乘以5(因为一周工作5天)...
压缩包里有2个文件,用于计算两个日期相差的工作日天数(排除周末和法定节假日): 1、excel表为2023年日历数据,并且备注工作日、周末,调休、节假日类型,可导入数据库。 2、SQL文件为2023年所有日期的插入SQL,并...
- `DateDiff("d", {fn NOW()}, '2023-04-10')` 计算出当前日期与今年生日之间的天数差,假设结果为5天。 - 因为5天在0到9天之间,所以该用户会被此查询语句选中。 #### 四、注意事项 - 使用`{fn NOW()}`时需注意...