[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