[FUG-BR] [off] [longo] Pegando datas timestamp em arquivo

Nilton Jose Rizzo rizzo em i805.com.br
Sexta Julho 25 23:46:50 BRT 2008


> 
> > 2008/7/23 Cristiano Panvel <cristiano.panvel at gmail.com>:
> > > Oi, o banco he MySQl versao 3.0, e nem posso pensar em atualizar
> > > por enquanto...
> > >
> > > Tenho uma lista grande com esses valores em timestamp, eu tenho
> > > que achar o intervalo dessas datas comecando ler pelo comeco do
> > > arquivo, primeira linha he:
> > >
> > > 20070925145857.714132
> > >
> > > Quando o intervalo da hora mudar de 145857 para 151100 eu paro de
> > > ler e imprimo essas duas linhas em um algum lugar, porque irei
> > > precisar desses valores depois, e continou lendo da linha que
> > > parei ate o final he mais ou menos isso.Nao sei se tem essa opcao
> > > no MySQL pelo na versao 3 eu nao achei
> > >
> > > 2008/7/22 Tiago Drumond <kdc_vk at hotmail.com>:
> > > eschoedler at viavale.com.br -- Tue, 22 Jul 2008 14:43:50 -0300:
> > > > "Cristiano Panvel" <cristiano.panvel at gmail.com> -- Tue, Jul 22, 2008
1:03 PM:
> > > >
> > > > Oi pessoal,
> > > > Tenho um arquivo no formato timestamp extraido do banco. Dessa
> > > > forma:
> > > > 
> > > > 20070925145857.714132
> > > > 20070925145859.714131
> > > > 20070925145900.714130
> > > > 20070925145902.714129
> > > > 20070925145904.714129
> > > > 20070925145906.714128
> > > > 20070925145907.714127
> > > > 20070925145909.714126
> > > > 20070925151100.714126
> > > > 20070925151110.788127
> > > > 20070925151200.725128
> > > > 

Estou pegando carona aqui ... me corrijam se estiver errado ...

 Você precisa retirar as primeiras linhas de cada secao, ou seja, 
  extraindo do exemplo acima:

20070925145857.714132 e
20070925151100.714126

   Voce utiliza o Mysql 3.x certo?

   porque não utiliza o seguinte comando:

   SELECT left(campodotimestamp,14) from tabela limit 1  <- retorna a 1 ocorrencia
   
PS.: segue seguencia de testes;

mysql> create table a ( ts numeric (21,6));
Query OK, 0 rows affected (0.05 sec)

mysql> create table b ( ts timestamp);
Query OK, 0 rows affected (0.01 sec)


mysql> insert into a values (
20070925145857.714132),(20070925145859.714131),(20070925145900.714130),(20070925145902.714129),(20070925145904.714129),(20070925145906.714128),(20070925145907.714127),(20070925145909.714126),(20070925151100.714126),(
20070925151110.788127),( 20070925151200.725128);
Query OK, 11 rows affected (0.00 sec)
Records: 11  Duplicates: 0  Warnings: 0

mysql> insert into b values (
20070925145857.714132),(20070925145859.714131),(20070925145900.714130),(20070925145902.714129),(20070925145904.714129),(20070925145906.714128),(20070925145907.714127),(20070925145909.714126),(20070925151100.714126),(
20070925151110.788127),( 20070925151200.725128);
Query OK, 11 rows affected, 1 warning (0.01 sec)
Records: 11  Duplicates: 0  Warnings: 1

mysql> select  ts from a limit 1;
+-----------------------+
| ts                    |
+-----------------------+
| 20070925145857.714132 |
+-----------------------+
1 row in set (0.00 sec)

mysql> select  ts from b limit 1;
+---------------------+
| ts                  |
+---------------------+
| 2007-09-25 14:58:58 |
+---------------------+
1 row in set (0.01 sec)

mysql> select
    -> left(ts,14) from a;
+----------------+
| left(ts,14)    |
+----------------+
| 20070925145857 |
| 20070925145859 |
| 20070925145900 |
| 20070925145902 |
| 20070925145904 |
| 20070925145906 |
| 20070925145907 |
| 20070925145909 |
| 20070925151100 |
| 20070925151110 |
| 20070925151200 |
+----------------+
11 rows in set (0.04 sec)

mysql> select  left(ts,14) from b;
+----------------+
| left(ts,14)    |
+----------------+
| 2007-09-25 14: |
| 0000-00-00 00: |
| 2007-09-25 14: |
| 2007-09-25 14: |
| 2007-09-25 14: |
| 2007-09-25 14: |
| 2007-09-25 14: |
| 2007-09-25 14: |
| 2007-09-25 15: |
| 2007-09-25 15: |
| 2007-09-25 15: |
+----------------+
11 rows in set (0.00 sec)


testa ai .. se quiser usar mysql no shell pode criar um arquivo bat
com o sql (as queries) e rodar do seguinte modo:

mysql -u root < arquivo.sql

mas o arquivo.sql pode ser:

user database;

select left(ts,14) from a;


e em C-shell:

#!/sbin/csh

set inicio= `mysql -u root < arquivo.sql | awk '{ print $1 };' | tail -n 1`

while (1)

set p = @ inicio + xxxxxx
echo "use database;" > novo.sql
echo "select ts from tabela where ($p) = left(ts,14) limit 1;" >> novo.sql
set inicio= `mysql -u root < arquivo.sql | awk '{ print $1 };' | tail -n 1`

end


veja se era isso.


-- 
Nilton José Rizzo 
805 Informatica 
Disseminando tecnologias 
021 2413 9786



Mais detalhes sobre a lista de discussão freebsd