在存储过程日期格式中要更改ST_DATE [英] In stored procedure date format to be changed ST_DATE

查看:90
本文介绍了在存储过程日期格式中要更改ST_DATE的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的商店程序如下



My store procedure as follows

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROC [dbo].[OH_PKG_DATE_COMBINATION](@PKG_ID VARCHAR(50))

AS
BEGIN

DECLARE @SNO INT
DECLARE @SNO_I INT
DECLARE @COURSE VARCHAR(50),@COURSE_I VARCHAR(50),@ST_DATE DATETIME,@EN_DATE DATETIME,@DISP VARCHAR(100)
DECLARE @EN_DATE_I INT
DECLARE @COURSE_COUNT INT , @COURSE_COUNT_I INT
DECLARE @EN_DATE_J DATETIME
DECLARE @TEST VARCHAR(50)
CREATE TABLE #TEMP (CMN_MINOR_CODE VARCHAR(50),ST_DATE DATETIME,EN_DATE DATETIME,DISP VARCHAR(100))
CREATE TABLE #TEMP_ALLOCATION (SNO INT IDENTITY,COURSE VARCHAR(50),ST_DATE DATETIME,EN_DATE DATETIME,DISP VARCHAR(100))
CREATE TABLE #TEMP_ALLOCATION_COURSES (SNO VARCHAR(50),COURSE VARCHAR(50),ST_DATE VARCHAR(50),EN_DATE VARCHAR(50),DISP VARCHAR(100),SNO1 INT IDENTITY)
CREATE TABLE #TEMP_SNO (SNO INT)
CREATE TABLE #Temp_Result (SNO VARCHAR(50),COURSE VARCHAR(50),ST_DATE VARCHAR(50),EN_DATE VARCHAR(50),DISP VARCHAR(100),SNO1 INT )

INSERT INTO #TEMP
Select Distinct
d.cmn_minor_code ,
b.cbm_batch_start_dt ,
cbm_batch_end_dt ,
(rtrim(d.cmn_minor_code) + ' : Date - '
+ convert(varchar,b.cbm_batch_start_dt,106))
+ ' To - ' + CONVERT(VARCHAR, cbm_batch_end_dt,106)
 
From
co_package_detail D,
co_batch_master B,
batch_seats S
Where
s.cbm_batch_id = b.cbm_batch_id And
s.avil_Seats > 0 And
b.cbm_batch_start_dt > getdate()- 1 And
b.cbm_batch_start_dt < getdate()+ 5000 And
b.cmn_minor_code = d.cmn_minor_code And
d.cpm_pkg_id =@PKG_ID
Order By 2
SELECT @COURSE_COUNT = COUNT(*) FROM CO_PACKAGE_DETAIL WHERE cpm_pkg_id = @PKG_ID
INSERT INTO #TEMP_ALLOCATION(COURSE,ST_DATE,EN_DATE,DISP) SELECT * FROM #TEMP
INSERT INTO #TEMP_SNO SELECT SNO FROM #TEMP_ALLOCATION
DECLARE CUR_COURSES CURSOR FOR
SELECT * FROM #TEMP_ALLOCATION order by 1
OPEN CUR_COURSES
FETCH CUR_COURSES INTO @SNO,@COURSE,@ST_DATE,@EN_DATE,@DISP
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO #TEMP_ALLOCATION_COURSES VALUES (@SNO,@COURSE,@ST_DATE,@EN_DATE,@DISP)
SET @SNO_I = @SNO
WHILE @SNO_I > 0
BEGIN
SELECT @COURSE_COUNT_I = COUNT(*) FROM #TEMP_ALLOCATION_COURSES WHERE SNO = @SNO_I AND COURSE=@COURSE
IF @COURSE_COUNT_I < 1
BEGIN
SELECT @EN_DATE_I = COUNT(*) FROM #TEMP_ALLOCATION
WHERE ST_DATE > (SELECT TOP 1 EN_DATE FROM #TEMP_ALLOCATION_COURSES WHERE SNO = @SNO_I) and SNO=@SNO --ORDER BY 1 DESC)
SELECT TOP 1 @TEST = (CONVERT(VARCHAR,EN_DATE) + RTRIM(COURSE) + CONVERT(VARCHAR,SNO)) FROM #TEMP_ALLOCATION_COURSES
WHERE SNO = @SNO_I ORDER BY 1 DESC
SELECT @TEST = (@TEST + ' - C - ' + CONVERT(VARCHAR,COUNT(*))) FROM #TEMP_ALLOCATION_COURSES
WHERE SNO = @SNO_I
SELECT TOP 1 @EN_DATE_J = EN_DATE FROM #TEMP_ALLOCATION_COURSES
WHERE SNO = @SNO_I ORDER BY 1 DESC
IF @EN_DATE_J<@ST_DATE
BEGIN
INSERT INTO #TEMP_ALLOCATION_COURSES
VALUES(
@SNO_I,@COURSE,@ST_DATE,@EN_DATE,@DISP )
END
END
SELECT @COURSE_COUNT_I=COUNT(*) FROM #TEMP_ALLOCATION_COURSES WHERE SNO=@SNO_I
IF @COURSE_COUNT_I=@COURSE_COUNT
BEGIN
DELETE FROM #TEMP_SNO WHERE SNO=@SNO_I
END
SET @SNO_I = @SNO_I - 1
END
FETCH CUR_COURSES INTO @SNO,@COURSE,@ST_DATE,@EN_DATE,@DISP
END
CLOSE CUR_COURSES
DEALLOCATE CUR_COURSES

Declare @Rcount int
Declare @Sno1 int
Set @Sno1=1;
Declare @Snoremove Varchar(max)
Set @Rcount=(Select distinct Sno from #TEMP_ALLOCATION_COURSES
WHERE SNO NOT IN( SELECT * FROM #TEMP_SNO) and Sno=@Sno1)

WHILE @Rcount <20
BEGIN
insert into #Temp_Result
Select SNO,COURSE,ST_DATE,EN_DATE,DISP,0
from #TEMP_ALLOCATION_COURSES WHERE SNO NOT IN( SELECT * FROM #TEMP_SNO) and Sno=@Rcount
union all
Select top 1 'ns' as sno,'sc' as COURSE,'sd 'as ST_DATE,'ed' as EN_DATE,'ds' as DISP,SNO1 from #TEMP_ALLOCATION_COURSES WHERE SNO NOT IN( SELECT * FROM #TEMP_SNO) and Sno=@Rcount
SET @Sno1 = @Sno1 + 1
SET @Rcount = @Rcount + 1;
END;

Set @Snoremove=(Select max(sno1) from #Temp_Result )
Delete from #Temp_Result where sno1=@Snoremove
Select * from #Temp_Result ;
END





当我运行上面的商店程序输出时如下



exec [OH_PKG_DATE_COMBINATION]'PKG0000005'





When i run the above store procedure output as follows

exec [OH_PKG_DATE_COMBINATION] 'PKG0000005'

  SNO    Course                     ST_DATE              EN_DATE                                          DISP                                                           SNO1
 
 
1      PSCRB               Jul 20 2015 12:00AM            Jul 24 2015 12:00AM           PSCRB : Date - 20 Jul 2015 To - 24 Jul 2015       0
1     AFF                      Jul 27 2015 12:00AM           Aug 1 2015 12:00AM           AFF : Date - 27 Jul 2015 To - 01 Aug 2015          0
1     MFA                     Jul 29 2015 12:00AM          Aug 1 2015 12:00AM            MFA : Date - 29 Jul 2015 To - 01 Aug 2015         0





从上面的存储过程我想要输出如下





From the above stored procedure i want output as follows

 SNO  Course                  ST_DATE                   EN_DATE                                             DISP                                                     SNO1 
 
1 PSCRB                 20 Jul   2015                          24 Jul 2015                      PSCRB : Date - 20 Jul 2015 To - 24 Jul 2015                0
1 AFF                      27 Jul 2015                            1   Aug 2015                     AFF : Date - 27 Jul 2015 To - 01 Aug 2015                  0
1 MFA                     29 Jul 2015                           1   Aug2015                      MFA : Date - 29 Jul 2015 To - 01 Aug 2015                  0





从存储过程如何将ST_DATE和EN_DATE更改为上述格式。例20 2015年7月。



请帮助我。



From the stored procedure how the change the ST_DATE and EN_DATE into above format. Example 20 Jul 2015.

please help me.

推荐答案

USE



SELECT转换(varchar,ST_DATE,106)





工作SELECT转换(varchar,getdate(),106)
USE

SELECT convert(varchar, ST_DATE, 106)


Working SELECT convert(varchar, getdate(), 106)


这篇关于在存储过程日期格式中要更改ST_DATE的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆