1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Esta e para a Ophelia

Discussão em 'Programação' iniciada por Any, 7 de Julho de 2003. (Respostas: 35; Visualizações: 2496)

  1. Any

    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
     
  2. Andr0m3da

    Andr0m3da Power Member

    formatas o campo como apenas 'DD-MM-YYYY' ? :D
     
  3. Any

    Any Power Member

    Andr0m3da e como faço isso

    POR CODIGO
    e q n gosto mto de trabalhar com o enterprise manager... :D
     
  4. Feiticeiro

    Feiticeiro Power Member

    Define o campo como "smalldatetime", que funca bem.
     
  5. Andr0m3da

    Andr0m3da Power Member

    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: 8 de Julho de 2003
  6. Tafinho

    Tafinho Power Member

    Penso que deveria suportar o tipo DATE , que só contém uma data...
     
  7. Andr0m3da

    Andr0m3da Power Member

    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.
     
  8. Tafinho

    Tafinho Power Member

    Já tive a ver na MSDN, tens de meter smalldatetime e mesmo assim vai até ao minuto...
     
  9. Any

    Any Power Member

    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...
     
  10. hmf

    hmf Power Member

    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: 8 de Julho de 2003
  11. Ophelia

    Ophelia Power Member

    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: 8 de Julho de 2003
  12. Any

    Any Power Member

    Tentei a ultima explikacao q deste e funcionou as 1000 maravilhas obrigadao :) eu sabia q ias conseguir desenrascar-me :)


    jitos ****
     
  13. hmf

    hmf Power Member

    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'
     
  14. Ophelia

    Ophelia Power Member

    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.
     
  15. Tafinho

    Tafinho Power Member

    Como eu gosto do meu MySQL...
     
  16. estigma

    estigma Power Member

    :D
    Concordo e subscrevo.
     
  17. Ophelia

    Ophelia Power Member

    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.
     
  18. Tafinho

    Tafinho Power Member

    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...
     
  19. Any

    Any Power Member

    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
     
  20. estigma

    estigma Power Member

    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.
     

Partilhar esta Página