Como manipular Datas no SQLite

SQLite

25/04/2016

Ola Meus caros,

Eu novamente, agora com duvida em outro banco.

Estou tentando montar um relatorio no meu software de suporte que usa o banco sqlite.

e estou com dificuldades de manipular as datas.

Consegui montar basicamente esse select

SELECT 
  *
FROM tickets
where created_at = date('now')


A questao é que nao esta trazendo resultados e eu quero trazer todos os tiquetes abertos hoje.

Estou apanhando feito filho de bandido. kkkkk

me ajudem por favor!!!! kkkkkk

Obrigado.

Abraco.
Alex Lekao

Alex Lekao

Curtidas 0

Respostas

Marcos P

Marcos P

25/04/2016

Alex,

A coluna "created_at" é de qual tipo de dado ?

Quando você faz...

SELECT created_at FROM tickets;


Qual a máscara de retorno dos dados recuperados pelo banco ? YYYY-MM-DD ?

Quando você faz...

 SELECT date('now');


A data atual é retornada ? No mesmo formato de "created_at" ?
GOSTEI 0
Alex Lekao

Alex Lekao

25/04/2016

ola Marcos, bom dia!!!

aparece como YYYY-MM-DD HH:MM:SS.

nao, para retornar igual tenho que usar

select datetime('now')


Obrigado.
GOSTEI 0
Jothaz

Jothaz

25/04/2016

Usei SQLite muito pouco e portanto não sou a pessoa mais indicada para ajudar, mas tente assim:

SELECT strftime('%d-%m-%Y', 'now')


Não consigo testar, pois estou como note da empresa e não tenho SQLite nele.

Para maiores detalhes Date And Time Functions
GOSTEI 0
Alex Lekao

Alex Lekao

25/04/2016

Entao Jothaz,

Eu ate olhei essa pagina de documentacao do sqlite, mas confesso que fiquei meio confuso. srsrsr

so para eu ver se entendi, essa sintaxe que vc me passou seria para deixar a data no padrao "brasileiro", certo?

Ate que ja estou conseguindo manipular do jeito que eu queria, que era pegar a data de hoje para tras, mas como acabei confundindo os simbolos(erro banal e idiota. rsrsr), acabou nao dando o resultado esperado.

Agora vou precisar entender como trazer o tempo dos tickets em aberto, pegando a data de criacao e a data de hoje e subtrair, coisa que ainda estou analisando o como fazer.

Achei bem simples, mas meio novo para mim e um pouco diferente. rssr

Obrigado.
GOSTEI 0
Jothaz

Jothaz

25/04/2016

É SQL pero no mucho.

É normal esse estranhamento, mas use a teoria suína: fuça, mas fuça bastante que chegarás lá.
GOSTEI 0
Alex Lekao

Alex Lekao

25/04/2016

kkkkkk

to quase chegando no comeco. kkkkk

essa teoria eh a que mais uso, ja consegui deixar a data do jeito que quero, padrao brasileiro, dd/mm/aaaa, agora estou pesquisando sobre como calcular as datas.
GOSTEI 0
Marcos P

Marcos P

25/04/2016

Se "calcular as datas" tiver a ver com a diferença entre elas, utilize a função julianday(), conforme descrito no help do Sqlite.

Boa sorte !
GOSTEI 0
Alex Lekao

Alex Lekao

25/04/2016

Oi Marcos,

Seria basicamente isso mesmo, eu ate tenho acompanhado o help dele, mas confesso que tem me deixado bastante confuso.

Infelizmente tive que parar, pq o aplicativo que estou usando nao esta abrindo os relatorios para dar continuidade.

Mas assim que voltar a funcionar eu testo novamente.

Obrigado!!!!
GOSTEI 0
Fernanda

Fernanda

25/04/2016

Bom dia, Alex.

Estou tendo problemas com datas no SQLite e achei o seu post, talvez vc possa me ajudar.

Estou tentando migrar o banco do TRAC no SQLite para o SQL Server. Porém não estou conseguindo visualizar as datas da tabela ticket, nem no SQLite Administrator nem no prompt de comando (sqlite3). As colunas time e changetime vêm em branco.

Você sabe como fazer para visualizar os valores?

No prompt eu tento "select datetime(time / 1000000, 'uniepoch', 'localtime'), datetime(changetime / 1000000, 'uniepoch', 'localtime') from ticket" mas não retorna nada, e eu sei que tem valores nessas colunas.

Você pode me ajudar?
GOSTEI 0
Alex Lekao

Alex Lekao

25/04/2016

Oi Luciana, bom dia!!!

Olha, eu nem lembrava mais deste post. rsrs

Você quer migrar para o SQL Server? Qual Versão?

Eu não uso mais SQLite faz um bom tempo, se não me engano era em um software de chamados tecnicos que eu utilizava a alguns anos atrás, eu precisaria criar uma base de testes em alguma vm para testar e tentar te ajudar.

Mas posso tentar te ajudar sim, naquilo que estiver ao meu alcanse.

Atenciosamente,

Bom dia, Alex.

Estou tendo problemas com datas no SQLite e achei o seu post, talvez vc possa me ajudar.

Estou tentando migrar o banco do TRAC no SQLite para o SQL Server. Porém não estou conseguindo visualizar as datas da tabela ticket, nem no SQLite Administrator nem no prompt de comando (sqlite3). As colunas time e changetime vêm em branco.

Você sabe como fazer para visualizar os valores?

No prompt eu tento "select datetime(time / 1000000, 'uniepoch', 'localtime'), datetime(changetime / 1000000, 'uniepoch', 'localtime') from ticket" mas não retorna nada, e eu sei que tem valores nessas colunas.

Você pode me ajudar?
GOSTEI 0
Fernanda

Fernanda

25/04/2016

Oi Alex.

Estou usando o SQL Server 2017, mas o problema é no SQLite.

Também usávamos o TRAC, um software para chamados técnicos, mas agora estamos usando um novo sistema e eu preciso migrar os tickets antigos para o sistema novo.

Estou gerando arquivos csv pelo command prompt, usando o comando Separator, o Output e um select. Só que os campos do tipo data vêm em branco.

Estou formatando os campos no select com a função datetime:

select datetime(time / 1000000, 'uniepoch', 'localtime'), datetime(changetime / 1000000, 'uniepoch', 'localtime') from ticket

porém continua retornando em branco.

Você sabe por quê, e como solucionar esse problema?

Um abraço,

Fernanda Araujo
GOSTEI 0
Jothaz

Jothaz

25/04/2016

Oi Alex.

Estou usando o SQL Server 2017, mas o problema é no SQLite.

Também usávamos o TRAC, um software para chamados técnicos, mas agora estamos usando um novo sistema e eu preciso migrar os tickets antigos para o sistema novo.

Estou gerando arquivos csv pelo command prompt, usando o comando Separator, o Output e um select. Só que os campos do tipo data vêm em branco.

Estou formatando os campos no select com a função datetime:

select datetime(time / 1000000, 'uniepoch', 'localtime'), datetime(changetime / 1000000, 'uniepoch', 'localtime') from ticket

porém continua retornando em branco.

Você sabe por quê, e como solucionar esse problema?

Um abraço,

Fernanda Araujo


Pelo que entendi você esta usando o SQLCMD no prompt de comando?

Por favor post o comando completo que você esta usando, facilita a ajuda.

Já usei o comando abaixo usando o PowerShell e funciona.

Invoke-Sqlcmd -Query "SELECT * FROM Sua_tabela;" `
              -Database Seu_banco_dados `
              -Server Seu_server |
Export-Csv -NoTypeInformation `
           -Path "Seu_cvs.csv" `
           -Encoding UTF8

GOSTEI 0
Alex Lekao

Alex Lekao

25/04/2016

Oi Fernanda,

Me tira uma dúvida... pq vc esta usando esse "/ 1000000"?

Experimentou fazer a operação sem ele?

Pelo que estou vendo na documentação, o que vc esta usando esta correto.


Oi Alex.

Estou usando o SQL Server 2017, mas o problema é no SQLite.

Também usávamos o TRAC, um software para chamados técnicos, mas agora estamos usando um novo sistema e eu preciso migrar os tickets antigos para o sistema novo.

Estou gerando arquivos csv pelo command prompt, usando o comando Separator, o Output e um select. Só que os campos do tipo data vêm em branco.

Estou formatando os campos no select com a função datetime:

select datetime(time / 1000000, 'uniepoch', 'localtime'), datetime(changetime / 1000000, 'uniepoch', 'localtime') from ticket

porém continua retornando em branco.

Você sabe por quê, e como solucionar esse problema?

Um abraço,

Fernanda Araujo
GOSTEI 0
Alex Lekao

Alex Lekao

25/04/2016

Oi Fernanda,

Seu script parece estar errado.

de uma olhada e ajuste para "unixepoch".

Dê uma olhada e me diga se funcionou.

Atenciosamente,


Oi Alex.

Estou usando o SQL Server 2017, mas o problema é no SQLite.

Também usávamos o TRAC, um software para chamados técnicos, mas agora estamos usando um novo sistema e eu preciso migrar os tickets antigos para o sistema novo.

Estou gerando arquivos csv pelo command prompt, usando o comando Separator, o Output e um select. Só que os campos do tipo data vêm em branco.

Estou formatando os campos no select com a função datetime:

select datetime(time / 1000000, 'uniepoch', 'localtime'), datetime(changetime / 1000000, 'uniepoch', 'localtime') from ticket

porém continua retornando em branco.

Você sabe por quê, e como solucionar esse problema?

Um abraço,

Fernanda Araujo
GOSTEI 0
Fernanda

Fernanda

25/04/2016

Muito obrigada, Alex! Era isso mesmo, agora consigo visualizar as datas. Salvou minha vida!
GOSTEI 0
Alex Lekao

Alex Lekao

25/04/2016

Oi Fernanda,

Disponha!!

Se precisar, é só falar.

Tenha um bom dia.

Muito obrigada, Alex! Era isso mesmo, agora consigo visualizar as datas. Salvou minha vida!
GOSTEI 0
POSTAR