Fórum Alterando apenas hora. #545852
16/02/2016
0
Para cada grupo de horario tem uma identificação na tabela de horário (que é a que preciso alterar), essa tabela é assim:
Resultado do select resumido:
[IDHORARIO]
,[HORARIO]
,[SEG_ENT1]
,[SEG_SAI1]
,[SEG_ENT2]
,[SEG_SAI2]
,[TER_ENT1]
,[TER_SAI1]
,[TER_ENT2]
,[TER_SAI2]
comecei a fazer a seguinte procedure
DECLARE @idhorario INT = (SELECT idhorario from TB_HORARIO),
@hentrada datetime = (select SEG_ENT1, SEG_ENT2, TER_ENT1, TER_ENT2, QUA_ENT1, QUA_ENT2, QUI_ENT1, QUI_ENT2, SEX_ENT1, SEX_ENT2 from TB_HORARIO),
@hsaida datetime = (select SEG_SAI1, SEG_SAI2, TER_SAI1, TER_SAI2, QUA_SAI1, QUA_SAI2, QUI_SAI1, QUI_SAI2, SEX_SAI1, SEX_SAI2 from TB_HORARIO)
Mas está dando a seguinte mensagem
Mensagem 116, Nível 16, Estado 1, Linha 6
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
Mensagem 116, Nível 16, Estado 1, Linha 7
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
Simone
Curtir tópico
+ 0Posts
16/02/2016
Marcos P
declare @hentrada datetime = (select SEG_ENT1, SEG_ENT2, TER_ENT1, TER_ENT2, QUA_ENT1, QUA_ENT2, QUI_ENT1, QUI_ENT2, SEX_ENT1, SEX_ENT2 from TB_HORARIO)
É a tentativa de preencher o valor de uma variável com o conteúdo de várias colunas... Por isso do erro !
A lógica não é essa... você deve atualizar cada uma das colunas ( via Update ) utilizando a função DatedAdd ( com o parâmetro hh )... assumindo, claro, que as colunas são datetime.
Dê uma olhada na sintaxe do DateAdd e, senão conseguir, retorne por aqui com a estrutura da tabela e o resto da query que você está tentando executar.
Gostei + 0
16/02/2016
Simone
obrigado pela atenção, mas não to conseguindo achar um jeito de alterar horas e minutos de todos os dias de uma unica vez,
a estrutura da tabela é essa
CREATE TABLE [dbo].[HORARIO](
[IDHORARIO] [smallint] NOT NULL DEFAULT ((0)),
[DSHORARIO] [nvarchar](40) NOT NULL,
[SEG_ENT1] [datetime] NOT NULL ,
[SEG_SAI1] [datetime] NOT NULL,
[SEG_ENT2] [datetime] NOT NULL,
[SEG_SAI2] [datetime] NOT NULL,
[TER_ENT1] [datetime] NOT NULL,
[TER_SAI1] [datetime] NOT NULL ,
[TER_ENT2] [datetime] NOT NULL ,
[TER_SAI2] [datetime] NOT NULL ,
[QUA_ENT1] [datetime] NOT NULL,
[QUA_SAI1] [datetime] NOT NULL ,
[QUA_ENT2] [datetime] NOT NULL,
[QUA_SAI2] [datetime] NOT NULL ,
[QUI_ENT1] [datetime] NOT NULL ,
[QUI_SAI1] [datetime] NOT NULL ,
[QUI_ENT2] [datetime] NOT NULL,
[QUI_SAI2] [datetime] NOT NULL ,
[SEX_ENT1] [datetime] NOT NULL,
[SEX_SAI1] [datetime] NOT NULL ,
[SEX_ENT2] [datetime] NOT NULL,
[SEX_SAI2] [datetime] NOT NULL
)
Gostei + 0
16/02/2016
Marcos P
select getdate(),dateadd(hh,-1,getdate())
Fica facil fazer o que você precisa...
update horario
set seg_ent1 = dateadd(hh,-1,seg_ent1),
seg_sai1 = dateadd(hh,-1,seg_sai1),
seg_ent2 = dateadd(hh,-1,seg_ent2),
seg_sai2 = dateadd(hh,-1,seg_sai2),
:
:
Gostei + 0
16/02/2016
Simone
Quando terminar eu posto aqui como ficou.
Mais uma vez obrigado
Gostei + 0
23/02/2016
Simone
Apenas troquei horas por minutos.
update horario
set
seg_ent1 = dateadd(minute,50,seg_ent1),
seg_sai1 = dateadd(minute,70,seg_sai1)
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)