Atributo Date SQL[RESOLVIDO]

14 respostas
Y

Boa noite galera!!
Então a duvida da vez é a seguinte …
Preciso fazer um select no bando de dados (SQL SERVER)comparando a data que meu sistema grava com a data atual e somente listar os que a data inserida forem >= a data de hoje!

gravo na tabela do banco de dados no seguinte formato

insert into loc_armario (data_devo)values(18/09/2012)

e preciso comparar o comando date do sql com este atributo !
Abraços boa noite

14 Respostas

R
nao sei se vai te ajudar mais eu utilizei essa classe para data espero ajudar
import java.text.SimpleDateFormat;
import java.util.Date;
public class Data {
    String mes, dia, ano, dia_semana, hora; 
       SimpleDateFormat horaformatada = new SimpleDateFormat("hh:mm:ss");
       
       public void le_hora() {
           Date horaAtual = new Date();
           hora = horaformatada.format(horaAtual);
       }
       public void le_data() {
        Date data = new Date();
        //mes = "" + data.getMonth();//esse metodo nao ta sendo mais utilizado mais vale a intesao 
        dia = "" + data.getDate();
        ano = "" + (1900 + data.getYear());
        //dia_semana = "" + data.getDay();
        switch(data.getDay()){
            case 0 : dia_semana = "Domigo Feira"; break;
            case 1 : dia_semana = "Segunda Feira"; break;
            case 2 : dia_semana = "Terça Feira"; break;
            case 3 : dia_semana = "Quarta Feira"; break;
            case 4 : dia_semana = "Quinta Feira"; break;
            case 5 : dia_semana = "Sexta Feira"; break;
            case 6 : dia_semana = "Sábado Feira"; break;    
        }
        switch(data.getMonth()){
            case 0 : mes = "1"; break;
            case 1 : mes = "2"; break;
            case 2 : mes = "3"; break;
            case 3 : mes = "4"; break;
            case 4 : mes = "5"; break;
            case 5 : mes = "6"; break;
            case 6 : mes = "7"; break;
            case 7 : mes = "8"; break;
            case 8 : mes = "9"; break;
            case 9 : mes = "10"; break;
            case 10 : mes = "11"; break;
            case 11 : mes = "12"; break;
        }
    }            
}
e utilizei esse codigo para mandar o valor para o bd la dentro do codigo botao novo quando eu salvo, salva com os valores que estao dentro do TextField agora indico os dados agora crio um objeto
//se presiso inporta a clase data
//aki fica depois de initComponents();
Data mostra_data;
mostra_data = new Data();
aki so pra novo
edtData.setText(mostra_data.dia + " / " + mostra_data.mes + " / " + mostra_data.ano);
e salvar
edtData.getText()//vai pegar os resultado do campo
tudo isso so pega se o codigo estiver bem estruturado se voce querer eu posto o codigo de salvar.
J

Não poderia ser só esse select?
select “campos” where data_devo >= getdate()

J

Isso, claro, se a coluna data_devo for do tipo datetime.

Y

jerson:
Não poderia ser só esse select?
select “campos” where data_devo >= getdate()

Sim sim eu tentei isso mas não sei inserir no banco n o formato date iai na hora de comparar não da certo . obrigado

Y
ricardoal:
nao sei se vai te ajudar mais eu utilizei essa classe para data espero ajudar
import java.text.SimpleDateFormat;
import java.util.Date;
public class Data {
    String mes, dia, ano, dia_semana, hora; 
       SimpleDateFormat horaformatada = new SimpleDateFormat("hh:mm:ss");
       
       public void le_hora() {
           Date horaAtual = new Date();
           hora = horaformatada.format(horaAtual);
       }
       public void le_data() {
        Date data = new Date();
        //mes = "" + data.getMonth();//esse metodo nao ta sendo mais utilizado mais vale a intesao 
        dia = "" + data.getDate();
        ano = "" + (1900 + data.getYear());
        //dia_semana = "" + data.getDay();
        switch(data.getDay()){
            case 0 : dia_semana = "Domigo Feira"; break;
            case 1 : dia_semana = "Segunda Feira"; break;
            case 2 : dia_semana = "Terça Feira"; break;
            case 3 : dia_semana = "Quarta Feira"; break;
            case 4 : dia_semana = "Quinta Feira"; break;
            case 5 : dia_semana = "Sexta Feira"; break;
            case 6 : dia_semana = "Sábado Feira"; break;    
        }
        switch(data.getMonth()){
            case 0 : mes = "1"; break;
            case 1 : mes = "2"; break;
            case 2 : mes = "3"; break;
            case 3 : mes = "4"; break;
            case 4 : mes = "5"; break;
            case 5 : mes = "6"; break;
            case 6 : mes = "7"; break;
            case 7 : mes = "8"; break;
            case 8 : mes = "9"; break;
            case 9 : mes = "10"; break;
            case 10 : mes = "11"; break;
            case 11 : mes = "12"; break;
        }
    }            
}
e utilizei esse codigo para mandar o valor para o bd la dentro do codigo botao novo quando eu salvo, salva com os valores que estao dentro do TextField agora indico os dados agora crio um objeto
//se presiso inporta a clase data
//aki fica depois de initComponents();
Data mostra_data;
mostra_data = new Data();
aki so pra novo
edtData.setText(mostra_data.dia + " / " + mostra_data.mes + " / " + mostra_data.ano);
e salvar
edtData.getText()//vai pegar os resultado do campo
tudo isso so pega se o codigo estiver bem estruturado se voce querer eu posto o codigo de salvar.
Então agradeço a ateçao mas é o seguinte eu tenho um campo de data ja mas ele grava no bd em varchar no formato "XX/XX/XXXX" onde xx são dias mes e ano. tenho que transformar esse campo pra gravar no formato ou date no banco de dados ou smalldatetime pra conseguir comparar etendeu? quando eu to teentando comprar esses tipos de atributo não ta dando certo , o vaor retornado do selecet que o jerson citou não é valido mas quero utilizar esse comando mesmo
select data_devo from loc_armarios where data_devo>= getdate()
só quero conseguir comparar o atributo que eu to gravando com o getdate . abraços
Y

yurisisbell:
jerson:
Não poderia ser só esse select?
select “campos” where data_devo >= getdate()

Sim sim eu tentei isso mas não sei inserir no banco n o formato date iai na hora de comparar não da certo . obrigado

apenas tenho que conseguir comparar o campo que estou gravando com o getDate do bd abraços

R

eu tbm tava com problema pra salvar fui lar no mysql e mudei o banco de dados pra varchar

J

A inserção ou select no SQL Server, se a instalação for a padrão, se dá no formato “AAAAMMDD” (entre aspas duplas), se o seu campo for DATETIME verifique isso (faça SELECT GETDATE() e veja o que retorna).
Agora, se na sua tabela esta usando VARCHAR, caraca, nem sei … vai ter que separar dia/mes/ano, converter e comparar com hoje … vai ser uma buxa …
Voce faz esse insert mesmo " insert into loc_armario (data_devo)values(18/09/2012) " ??? Esta funcionando?

R

sim, eu botei assim para quando eu clicar no btnNovo o jTextField o ganha os valores de//importei a class Data //e crie um objeto mostra_data Data mostra_data; public jFrame(){ initComponents(); mostra_data = new Data(); } //no botao novo fiz assim //no casso eu madei a data la para o jTextField edtData edtData.setText(mostra_data.dia + " / " + mostra_data.mes + " / " + mostra_data.ano);

J

Corrigindo:
O formato DATA é com aspas simples:
Ex. SELECT * FROM TABELA WHERE CAMPO_DATA = ‘20121010’

INSERT INTO TABELA (CAMPO_DATA) VALUES ('20121010')

Verifique o COLATE de seu DB, mas de qualquer forma aquele insert que voce esta usando acho que não funciona.
Qual versão do seu SQL Server?

Y

jerson:
A inserção ou select no SQL Server, se a instalação for a padrão, se dá no formato “AAAAMMDD” (entre aspas duplas), se o seu campo for DATETIME verifique isso (faça SELECT GETDATE() e veja o que retorna).
Agora, se na sua tabela esta usando VARCHAR, caraca, nem sei … vai ter que separar dia/mes/ano, converter e comparar com hoje … vai ser uma buxa …
Voce faz esse insert mesmo " insert into loc_armario (data_devo)values(18/09/2012) " ??? Esta funcionando?

cara sim eu consigo mas eu só consigo inserir desse modo porque no banco de dados essa varavel está como varchar!

Y

sim sim eu fiz isso mass na hora de comparar com o getDate()

M

.

Y

msergiost:
A função GETDATE() retorna o tipo de dados datetime corrente.

Para fazer comparação correta converta a data ‘18/09/2012’, char ou varchar, para datetime com CAST ou CONVERT.

Resolvi
Vou passsar a inserir a data nesse formato

insert into aqui(data2)values ('19990101')

e na hora de comparar

select * from aqui where data2<getdate() assim funciono certim

Criado 17 de agosto de 2012
Ultima resposta 25 de ago. de 2012
Respostas 14
Participantes 4