Translate

Mostrando postagens com marcador Firebird. Mostrar todas as postagens
Mostrando postagens com marcador Firebird. Mostrar todas as postagens

sábado, 25 de agosto de 2012

Dias da Semana entre SQL Server e Firebird

A função que retorna o dia da semana no SQL Server e Firebird tem resultados diferentes.

Firebird:
SELECT
  EXTRACT(WEEKDAY FROM CAST('19.08.2012' AS DATE)) AS Domingo,
  EXTRACT(WEEKDAY FROM CAST('20.08.2012' AS DATE)) AS Segunda,
  EXTRACT(WEEKDAY FROM CAST('21.08.2012' AS DATE)) AS Terca,
  EXTRACT(WEEKDAY FROM CAST('22.08.2012' AS DATE)) AS Quarta,
  EXTRACT(WEEKDAY FROM CAST('23.08.2012' AS DATE)) AS Quinta,
  EXTRACT(WEEKDAY FROM CAST('24.08.2012' AS DATE)) AS Sexta,
  EXTRACT(WEEKDAY FROM CAST('25.08.2012' AS DATE)) AS Sabado
FROM RDB$DATABASE
O resultado para o Firebird foi:
0 - Domingo; 1 - Segunda; 2 - Terça; 3 - Quarta; 4 - Quinta; 5 - Sexta; 6 - Sábado;

SQL Server: Sem alterar a configuração do DATEFIRST.
USE NOME_BANCO
GO
SELECT
  @@DATEFIRST
SELECT 
  DATEPART(WEEKDAY, '2012-08-19') AS Domingo,
  DATEPART(WEEKDAY, '2012-08-20') AS Segunda,
  DATEPART(WEEKDAY, '2012-08-21') AS Terça,
  DATEPART(WEEKDAY, '2012-08-22') AS Quarta,
  DATEPART(WEEKDAY, '2012-08-23') AS Quinta,
  DATEPART(WEEKDAY, '2012-08-24') AS Sexta,
  DATEPART(WEEKDAY, '2012-08-25') AS Sábado
O resultado para o SQL Server foi:
1 - Domingo; 2 - Segunda; 3 - Terça; 4 - Quarta; 5 - Quinta; 6 - Sexta; 7 - Sábado;

SQL Server: Alterando a configuração do DATEFIRST para 4.
USE NOME_BANCO
GO
SET DATEFIRST = 4
SELECT 
  DATEPART(WEEKDAY, '2012-08-19') AS Domingo,
  DATEPART(WEEKDAY, '2012-08-20') AS Segunda,
  DATEPART(WEEKDAY, '2012-08-21') AS Terça,
  DATEPART(WEEKDAY, '2012-08-22') AS Quarta,
  DATEPART(WEEKDAY, '2012-08-23') AS Quinta,
  DATEPART(WEEKDAY, '2012-08-24') AS Sexta,
  DATEPART(WEEKDAY, '2012-08-25') AS Sábado
O resultado para o SQL Server foi diferente do anterior:
4 - Domingo; 5 - Segunda; 6 - Terça; 7 - Quarta; 1 - Quinta; 2 - Sexta; 3 - Sábado;

SQL Server: Solução ideal quando você não quer que o DATEFIRST influencie nos resultados.
USE NOME_BANCO
GO
SET DATEFIRST = 7 -- Padrão
SELECT 
  (DATEPART(DW, '2012-08-19') + @@DATEFIRST) % 7 as Domingo,
  (DATEPART(DW, '2012-08-20') + @@DATEFIRST) % 7 as Segunda,
  (DATEPART(DW, '2012-08-21') + @@DATEFIRST) % 7 as Terça,
  (DATEPART(DW, '2012-08-22') + @@DATEFIRST) % 7 as Quarta,
  (DATEPART(DW, '2012-08-23') + @@DATEFIRST) % 7 as Quinta,
  (DATEPART(DW, '2012-08-24') + @@DATEFIRST) % 7 as Sexta,
  (DATEPART(DW, '2012-08-25') + @@DATEFIRST) % 7 as Sábado

SET DATEFIRST = 4
SELECT 
  (DATEPART(DW, '2012-08-19') + @@DATEFIRST) % 7 as Domingo,
  (DATEPART(DW, '2012-08-20') + @@DATEFIRST) % 7 as Segunda,
  (DATEPART(DW, '2012-08-21') + @@DATEFIRST) % 7 as Terça,
  (DATEPART(DW, '2012-08-22') + @@DATEFIRST) % 7 as Quarta,
  (DATEPART(DW, '2012-08-23') + @@DATEFIRST) % 7 as Quinta,
  (DATEPART(DW, '2012-08-24') + @@DATEFIRST) % 7 as Sexta,
  (DATEPART(DW, '2012-08-25') + @@DATEFIRST) % 7 as Sábado
O resultado para o SQL Server foi:
1 - Domingo; 2 - Segunda; 3 - Terça; 4 - Quarta; 5 - Quinta; 6 - Sexta; 0 - Sábado;
1 - Domingo; 2 - Segunda; 3 - Terça; 4 - Quarta; 5 - Quinta; 6 - Sexta; 0 - Sábado;

SQL Server: Para ter o mesmo resultado do Firebird.
USE NOME_BANCO
GO
SELECT 
  (DATEPART(DW, '2012-08-19') + @@DATEFIRST - 1) % 7 as Domingo,
  (DATEPART(DW, '2012-08-20') + @@DATEFIRST - 1) % 7 as Segunda,
  (DATEPART(DW, '2012-08-21') + @@DATEFIRST - 1) % 7 as Terça,
  (DATEPART(DW, '2012-08-22') + @@DATEFIRST - 1) % 7 as Quarta,
  (DATEPART(DW, '2012-08-23') + @@DATEFIRST - 1) % 7 as Quinta,
  (DATEPART(DW, '2012-08-24') + @@DATEFIRST - 1) % 7 as Sexta,
  (DATEPART(DW, '2012-08-25') + @@DATEFIRST - 1) % 7 as Sábado
O resultado para o SQL Server foi:
0 - Domingo; 1 - Segunda; 2 - Terça; 3 - Quarta; 4 - Quinta; 5 - Sexta; 6 - Sábado;
O resultado para o Firebird foi:
0 - Domingo; 1 - Segunda; 2 - Terça; 3 - Quarta; 4 - Quinta; 5 - Sexta; 6 - Sábado;

Muito cuidado para quem está migrando de banco, espero que você tenha testes para isso :)

Fonte:
- http://blog.sqlauthority.com/2007/04/22/sql-server-datefirst-and-set-datefirst-relations-and-usage
- www.kodyaz.com/articles/get-week-day-name-of-date-using-t-sql.aspx

segunda-feira, 5 de maio de 2008

5º FDD (Firebird Developers Day)

O Firebird Developers Day é o maior evento sobre o banco de dados Firebird do mundo e conta com diversas palestras nacionais e internacionais.
Nesta edição, o chefe de desenvolvimento do Firebird estará presente falando sobre as novidades ainda para esse ano e sobre as futuras versões.

Data: 19 de julho de 2008.
Local: UNIMEP, em Piracicaba-SP.

Firebird 2.04

Pessoal do desenvolvimento do Firebird não pára mesmo!
Após lançamento da versão final do Firebird 2.1, eles continuam trabalhando na correção de bugs da versão anterior (2.0.3).

Veja mais detalhes e download aqui.

sábado, 26 de abril de 2008

Firebird - Recursos mais desejados

O Carlos H. Cantu está realizando uma pesquisa para identificar os recursos mais desejados (importantes / urgentes) pela comunidade brasileira e conseqüentemente dar um feedback para o pessoal de desenvolvimento implementar nas próximas versões.

Então você que utiliza Firebird, vote aqui, são 8 questões para avaliar!