vinnyparker
Você não sabe como criar um campo data no Firebird ou não sabe como fazer a importação?
Se for para criar um campo data, o Firebird tem o tipo date, que armazena datas. A sintaxe em sql é:
nomedocampo date
Como exemplo, ao adicionar numa tabela de pedidos fazemos:
alter table pedidos add dtpedido date;
Se o seu problema for a importação, usar funções de String para colocar a data no formato dd/mm/yyyy ou mm/dd/yyyy, e aí você converte para data e grava no banco.
Abraço.
vinnyparker
TerraSkilll:
vinnyparker
Você não sabe como criar um campo data no Firebird ou não sabe como fazer a importação?
Se for para criar um campo data, o Firebird tem o tipo date, que armazena datas. A sintaxe em sql é:
nomedocampo date
Como exemplo, ao adicionar numa tabela de pedidos fazemos:
alter table pedidos add dtpedido date;
Se o seu problema for a importação, usar funções de String para colocar a data no formato dd/mm/yyyy ou mm/dd/yyyy, e aí você converte para data e grava no banco.
Abraço.
Absolutamente, o problema nao eh com o firebird, e sim com a importacao de dados.
a minha tabela necessida de um campo de data, que a tabela em dbf nao tem. ao contrario ela so tem um campo chamado movimento que so tem ano e mes, como eu disse a cima.
eu tentei da seguinte forma:
mas nao to conseguindo nao… alguma coisa ta errado…
vinnyparker
Bom, eu consegui fazer em parte… modifiquei bem o meu codigo. so tem um problema…
ele ta pegando um mes a frente. por exemplo
a primeira data que eu tenho eh 31.01.2001
e ele ta iniciando em 28.02.2001
segue meu codigo
if("MOVIMENTO".equals(field.getName())){fieldValue=((String)record[i]).trim();ano2=(StrHelper.substringBefore(fieldValue,"/"));}if("MOVIMENTO".equals(field.getName())){fieldValue=((String)record[i]).trim();mes=(StrHelper.substringAfter(fieldValue,"/"));}/**inicio dos tratamentos**/intano3=Integer.parseInt(ano2);intmes2=Integer.parseInt(mes);Datedata4=DateHelper.parse(ano3,mes2,28);
Basicamente eu decompus a String que eu tinha em 2 variaveis diferentes
usando o DateHelper eu formato a data, setando o dia que eu quero.
porem ele ta iniciando no mes 02, e o primeiro mes eh 01.
alguem tem uma ideia do que possa ser?
ano e mes
dudaskank
Bom, pra ter certeza, teria que ver como está o seu parser... mas tenho quase certeza que é porque, na classe GregorianCalendar, janeiro é o 0... olha um teste que fiz aqui:
importjava.text.DateFormat;importjava.text.SimpleDateFormat;importjava.util.Calendar;publicclassConverteData{publicstaticvoidmain(String[]args){StringanoMes="2010/01";// faz uma mágica e pega o ano e mêsintano,mes;ano=Integer.parseInt(anoMes.substring(0,4));mes=Integer.parseInt(anoMes.substring(5));System.out.println(ano);System.out.println(mes);Calendarcalendar=Calendar.getInstance();calendar.set(Calendar.YEAR,ano);// mês começa no 0, segundo o javadoc:// Field number for get and set indicating the month. This is a calendar-specific value. The first month of the year in the// Gregorian and Julian calendars is JANUARY which is 0; the last depends on the number of months in a year.calendar.set(Calendar.MONTH,mes-1);DateFormatdf=newSimpleDateFormat();System.out.println(df.format(calendar.getTime()));}}
a saída é:
2010103/01/1016:59
vinnyparker
resolvi de uma maneira muito simples
usei o mesmo codigo, mas como ele tava aumentando um mes eu coloquei um “-1” e pronto
o codigo ficou assim:
1. if ("MOVIMENTO".equals(field.getName())) {
2. fieldValue = ((String) record[i]).trim();
3. ano2 = (StrHelper.substringBefore(fieldValue, "/"));
4. }
5.
6. if ("MOVIMENTO".equals(field.getName())) {
7. fieldValue = ((String) record[i]).trim();
8. mes = (StrHelper.substringAfter(fieldValue, "/"));
9.
10. }
11.
12.
13. /**inicio dos tratamentos**/
14.
15.
16.
17. int ano3 = Integer.parseInt(ano2);
18.
19. int mes2 = Integer.parseInt(mes);
20.
21. Date data4 = DateHelper.parse(ano3, mes2 -1, 28);