Alterando apenas hora.
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
Posts
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.
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 )
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), : :
16/02/2016
Simone
Quando terminar eu posto aqui como ficou.
Mais uma vez obrigado
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)
Clique aqui para fazer login e interagir na Comunidade :)