DATA NO SQL SERVER 2000

ALCIRTEODORO 03/09/2009 14:49:06
#321846
Estou gravando a data no formato mm/dd/yyyy no sql server 2000 e retono a data para ser apresentanda ao usuário no formato dd/mm/yyyy. Ocorre que agora como esta no comço do mês a data correta que é 03/09/2009 o sistema esta trazendo como 09/03/2009 ele está confundindo por que tanto o dia quanto o mês são aceitaveis, existem.

Como resolver isso?
MARCELO.TREZE 03/09/2009 15:50:37
#321849
Só lembrando que para regra valer o tipo do campo no banco de dados deve ser Date Time, se for tipo texto pode causar este erro
ALCIRTEODORO 03/09/2009 15:51:37
#321850
Sim, o campo é Date Time !
RCMRO 03/09/2009 16:43:35
#321862
Experimenta mandar para o SQL, quando for gravar, no formato CHAR(10) [ô]yyyymmdd[ô] que sempre funciona, e não esquece de colocar, no momento de INSERT ou UPDATE o CONVERT(DATETIME, @data).
Quando for devolver, coloca
SELECT CONVERT(VARCHAR(10), 103) FROM ....
que ele retorna sempre DD/MM/YYYY.
ALCIRTEODORO 03/09/2009 19:31:56
#321885
Gravar, ele está gravando corretamente como mm/dd/yyyy somente na hora de recuperar a informações esta vindo a data no formato errado,. Isso ocorre somente para as datas de começo de mês e vai até o dia 12. Creio que ocorre pq, esta confundido, quando o dia vai de 1 a 12 ele pode ser confudido com o mês.

Veja abaixo como estou buscando os registros:

strDataI = Format$(mskDataInicial, [Ô]mm/dd/yyyy[Ô])
strDataF = Format$(mskDataFinal, [Ô]mm/dd/yyyy[Ô]) & [Ô] 23:59:59.997[Ô]

SELECT CodigoID, Nome, Tipo, DataAdd FROM Produtos WHERE DataAdd BETWEEN [ô][Ô] & strDataI & [Ô][ô] AND [ô][Ô] & strDataF & [Ô][ô][Ô]

Mas esta dando errado. Mando busca a data 03/09/2009 e o sistema me diz que não foi encontrado nada. Se mando pesquisar invertido com o mês na frente tipo 09/03/2009 ai ele me traz os dados.
RCMRO 03/09/2009 22:08:25
#321896
OK, não é 100% correto por ser conversão implicita mas ai vai:


strDataI$ = Format$(mskDataInicial, [Ô]yyyymmdd[Ô]) & [Ô] 00:00:00.000[Ô])
strDataF$ = Format$(mskDataFinal, [Ô]yyyymmdd[Ô]) & [Ô] 23:59:59.997[Ô]

X$ = [Ô]SELECT CodigoID, Nome, Tipo, DataAdd [Ô] & _
[Ô]FROM Produtos [Ô] & _
[Ô]WHERE DataAdd BETWEEN [ô][Ô] & strDataI$ & [Ô][ô] AND [ô][Ô] & strDataF$ & [Ô][ô][Ô]


Não se assuste, a data é sem as barras mesmo!!!!!
ALCIRTEODORO 08/09/2009 19:03:23
#322320
Não esta dando certo. Estou mando gravar as datas no banco de dados no formato MM/DD/YYYY porém ao abrir a base de dados e ver os registros, as datas que vão até o dia 12 estão no formato MM/DD/YYYY correto, e as datas que acima do dia 12 aparecem no formato DD/MM/YYYY ou seja esta nos dois formatos!

E quando mando abrir a tela de cadastro para visualizar um registro que foi incluido antes do dia 12 ele aparece no formato americano com o mês na frente.

VEJAM ABAIXO ALGUMAS DATAS NO BANCO DE DADOS:

28/1/2009 15:48:34
29/4/2009 22:22:57
9/2/2009 15:24:32 --> o correto é: 2/9/2009 15:24:32
9/3/2009 19:04:59 --> o correto é: 3/9/2009 19:04:59
RCMRO 15/09/2009 12:45:21
#322937
ALCIRTEODORO,

Vamos lá...
Sempre que for gravar ou filtrar uma data no SQLServer, usa o formato [Ô]yyyymmdd[Ô] sem barras e irá funcionar.
Para retornar o valor, você até pode retornar formatado com [Ô]CONVERT(VARCHAR(10),campo, 103)[Ô] e vem [Ô]dd/mm/yyyy[Ô].

Entendeu?

RETORNA E COMPARA DATAS

SELECT Nome, CONVERT(VARCHAR(10),dataentrada, 103)
FROM tbFuncionarios
WHERE dataentrada BETWEEN [ô]20080601 00:00:00[ô] AND [ô]20081231 23:59:59[ô]

GRAVAR

INSERT INTO tbFuncionairos (Nome, DataEntrada)
SELECT [ô]JOSE[ô], [ô]20090915[ô]


Easy... Tenta assim e acaba com o martírio e, se funcionar, não esquece de fechar o tópico.
ALCIRTEODORO 24/09/2009 16:27:24
#323593
Estou fazendo da seguinte forma:

Set rstTabela = cnnEstoque.Execute([Ô]SELECT DISTINCT CONVERT(VARCHAR(10),Date_Add, 103) FROM SGI_Vendas WHERE TipoSaidaID =[ô]1[ô] AND LojistaID=[ô][Ô] & strCodigoLojista & [Ô][ô] ORDER BY CONVERT(VARCHAR(10),Date_Add, 103)[Ô])

Estou executando a consulta acima, e depois faça assim:

txtData = rstTabela!Date_Add

Mas esta dando erro. Diz que o campo Date_Add não existe na consulta.
RCMRO 24/09/2009 16:36:42
#323594
Resposta escolhida
faltou só o ALIAS

Muda a linha do EXECUTA para a linha abaixo:


Set rstTabela = cnnEstoque.Execute([Ô]SELECT DISTINCT CONVERT(VARCHAR(10),[Date_Add], 103) AS [Date_Add] FROM SGI_Vendas WHERE TipoSaidaID =[ô]1[ô] AND LojistaID=[ô][Ô] & strCodigoLojista & [Ô][ô] ORDER BY [Date_Add][Ô])
Página 1 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas