Esta e para a Ophelia

Any

Power Member
pois e como ja houve uma thread denominadao Esta e para o AVxAMD e a minha vez de fazer uma para a ophelia :D

Ophelia em SQL Server como definimos um campo para ficar como Data apenas, ou seja, n kero um campo do tipo DateTime pois ele assim coloca-me a hora e eu n keria isso :(

Conheces alguma solução??

Pensei colocar o campo como string mas penso q depois n consigo fazer filtros entre datas do tipo

select *from tabela where data > x AND Data < y


Espero resposta :D
 
algures nos meus scripts tenho isto,

to_date(sysdate, 'DD-MM-YYYY') qq coisa assim, deixei o portatil no escritorio.

mas amanhã posso postar isso.

mas como já aconteceu com a ophelia curiosamente, a dica pode n servir de grande coisa, pq tou a falar de oracle...

da outra vez la veio ela "pois mas disso n tenho em ..." era q server? ja nem lembro, diz la q o decode() n é maravilha :D :D

hj tb andei com stress's nuns script's por causa das diferenças do oracle para o Sybase, precisamente nestas m3rdinhas. o que vale é q faço tudo primeiro no Ambiente de Teste, senão hj tinha corrido uma beca mal hehe
 
Última edição:
nos la na base de dados temos td com data e hora, e da oracle para o sybase nos portateis, até andam em formatos diferentes.

qd é para scripts fazerem o display, ou criar tabelas auxiliares para qq coisa eu faço ou igual ao que referi ou parecido.

se bem me lembro, tu ao teres um campo como Date...tens tb de definir o formato em que o queres guardar...

eu como só tapo buracos...nem sempre me lembro de tudo.
 
Tafinho pelo q percebi do msdn o smalldatetime continua a darnos a data e a hora, mas tive uma ideia, algum de vos sabe como concatnar strings em sql server??

pq tipo fazia o seguinte:


Declare @Ano int
Declare @Mes int
Declare @Dia int

set @ano=Year( getdate() )
Set @Mes=Month( getdate() )
Set @Dia = Day ( Getdate () )


concatnava tudo e ja tinha a data em formato correcto[/i ] depois bastavame fazer um trigger para insert e ele actualizava a data desta forma...

Espero ideias...
 
Mais facil é retornar a data (DATE) no formato logo através da query sql:

select convert (varchar , t.Data,103) as Data from tabela t
ou no caso que tu referiste
select convert (varchar , getDate(),103)

A tua solução é mais complicada já que o retorno de
Set @Dia = Day ( Getdate () )
seria para o dia de hoje 8

terias então de concatenar o 0 para obteres uma data standard de 10 caracteres (DD/MM/YYYY)

Para obter uma data DD/MM/YY (já agora):
select convert (varchar , getDate(),3)


Para mim é má politica usar o smalltime, já que as especificações de uma determinada aplicação podem ser alteradas a qualquer altura e será sempre melhor guardar as datas completas.

Espero que tenha ajudado ...
 
Última edição:
Tens uma boa noticia e uma má noticia...

A má é que no SQLServer quer seja um campo de DateTime, quer seja SmallDateTime, ele guarda-te sempre um valor para dia e outro para hora.

Quando não inseres a data, por defeito o SQLServer guarda-te a data 1/1/1900; quando nao inseres a hora, ele guarda-te 12:00:00 (se não estou em erro).

A boa noticia é que para fazeres pesquisas especificas só por dia ou hora, tens duas formas - uma delas já puseste na thread:

SELECT whatever FROM table WHERE data >x AND data < y

Podes sempre também usar o DATEPART para ires buscar datas especificas:

... WHERE DATEPART(day, data) = x AND DATEPART(month, data) = y AND DATEPART(year, data) = z


Uma coisa que só descobri há cerca de 2 semanitas, é que tb há formas de pesquisares apenas pela data ou pela hora sem teres de usar o DATEPART.

"So, you have two different columns, one for date & another one
for time. Assuming both columns are datetime datatypes, try:

INSERT yourTable(DateColumn, TimeColumn)
SELECT CONVERT(VARCHAR, GetDate(), 101),
CONVERT(VARCHAR, GetDate(), 108)

Note that SQL Server will do an implicit conversion of the VARCHAR
values into datetime values. If you 'must' make the datetime values
try:

INSERT yourTable(DateColumn, TimeColumn)
SELECT CAST(CONVERT(VARCHAR, GetDate(), 101) AS DATETIME),
CAST(CONVERT(VARCHAR, GetDate(), 108) AS DATETIME)


--
- Anith"

OU

"Check this out
/****************/
Date :
select convert(varchar(10),getdate(), 104)
Time :
select convert(varchar(10),getdate(), 108)
/****************/"


Encontrei isto nos grupos do google, tive a procura nos BOL e nao encontrei explicacao nenhuma para o que é isto - mas o que é certo é que funciona...

Espero ter conseguido ajudar em alguma coisa

Jinhos

Ophelia
 
Última edição:
Tentei a ultima explikacao q deste e funcionou as 1000 maravilhas obrigadao :) eu sabia q ias conseguir desenrascar-me :)


jitos ****
 
Isso que referis-te encontra-se na documentação do SQL Server (procurar por convert/Transact SQL-Reference)

Acho que não vale a pena separar a data da hora, podes sempre fazer queriesw directamente sobre o DateTime

Não estou a perceber qual o problema de fazer procuras só entre as datas:

set dateformat 'dmy'
select * from tabela t where
t.Data BETWEEN 'DD/MM/YYYY' AND 'DD/MM/YYYY'
 
Originally posted by hmf

Não estou a perceber qual o problema de fazer procuras só entre as datas:

set dateformat 'dmy'
select * from tabela t where
t.Data BETWEEN 'DD/MM/YYYY' AND 'DD/MM/YYYY'

Entre datas não costuma haver problema nenhum - o chato é quando queres ir buscar os valores de uma data especifica - se fizeres um "WHERE data = 08/07/2003" o SQLServer nao te encontra nenhum resultado - tens de usar o DATEPART 3 vezes (dia, mes, ano) na pesquisa.
 
Não querendo ser mazinha nem começar nenhuma discussão interminável, mas creio que tar a comparar o mySQL com o SQLServer é mais ou menos o mm que tar a querer comparar o pp SQLServer com Oracle...

MySQL é muito boa - levezinha e rápida - mas é um tipo de base de dados completamente diferente do SQLServer.

Eu tb costumo "dizer mal" de quase tudo quanto é Microsoft, mas neste caso não posso - o SQLServer é uma base de dados excelente: tens a possibilidade de usar Stored Procedures, Extended Stored Procedures, Triggers, Jobs, definires os teus próprios tipos de dados... sei lá mesmo... uma infinidade de coisas - para veres, trabalho com SQLServer há quase um ano e é rara a semana em que não descubra mais esta ou aquela funcionalidades que dão imenso jeito.
 
Originally posted by Ophelia

MySQL é muito boa - levezinha e rápida - mas é um tipo de base de dados completamente diferente do SQLServer.

Eu tb costumo "dizer mal" de quase tudo quanto é Microsoft, mas neste caso não posso - o SQLServer é uma base de dados excelente: tens a possibilidade de usar Stored Procedures, Extended Stored Procedures, Triggers, Jobs, definires os teus próprios tipos de dados...

Recomento uma consulta rápida ao site do MySQL...
O MySQL mudou muito nos últimos tempos...

Já agora, o SQLServer já cumpre o SQL92...?
Da ultima vez que lhe toquei ( há cerca de 1 mês) ainda não suportava query's dentro de checks... o que fez com que o mandasse imediatamente para o lixo...
 
eu ja tinha dito ha mto tempo aki neste forum...


kem n programa em linguagens MSFT n se safa, seja ela em base de dados ou user interface
 
MySQL... SQL...

O Preço do SQL é proibitivo.
Não vejo nenhuma vantagem em querer SQL.

A Microsoft quer competir com os sistemas Linux tendo criado para isso o WIN2003, pessoalmente acho que com o Win2003 a Microsoft só veio dar mais razões para escolher Linux. Trazem o MS ACCESS para competir com MySQL! OMG!

Obviamente que a Microsoft faz tudo para diminuir a força da concorrencia. Criando Mitos que não correspondem a verdade.
 
Back
Topo