date and times are extremely frustrating data types and SQL doesn’t make them any easier to work with than other languages. Enquanto data e hora são na verdade tipos de dados completamente diferentes, eles são muitas vezes mesclados em um tipo de dados datetime. SQL datas e horas sozinho são muito simples, mesmo que eles exigem uma formatação especial. No entanto, a fusão dos dois pode ser uma das tarefas mais dolorosas que você vai enfrentar em seus primeiros anos. Uma boa regra de ouro é usar apenas uma hora e data juntos quando você absolutamente precisa ou vai precisar no futuro. Vou explicar porque é que as datas e as horas complicam as coisas num minuto. Primeiro, vamos ver como a vida é fácil quando você simplesmente trabalha com datas.
trabalhar com datas SQL
nossa tabela de “Usuários” :
id | username | first | last | member_since |
---|---|---|---|---|
1 | ohBillNotAgain | Hillary | Clinton | 2011-12-25 |
2 | internetCreator | Al | Gore | 2011-12-8 |
3 | dontMessWithTexas | George | Bush | 2011-7-9 |
Let’s try to get all of our members before December 25, 2011.
Exemplo
SELECT *FROM UsersWHERE member_since < '2011-12-25'
Resultado
id | nome de usuário | nome | last | member_since |
---|---|---|---|---|
2 | internetCreator | Al | Gore | 2011-12-8 |
3 | dontMessWithTexas | George | Bush | 2011-7-9 |
tudo Bem, nós dissemos: ANTES de 25 de dezembro de 2011, o que significa pobres Hillary não está incluído porque ela está em dia. O Al mal conseguiu, mas o velho George estava muito antes do nosso encontro. Acho que devíamos falar sobre o que aconteceu. Até onde member_since < ‘2011-12-25’, sabemos o que estávamos fazendo. Podemos adivinhar o que se passa aqui, mas vou vencer o cavalo morto. Verificamos o nosso membro desde a coluna para ver se é inferior a, <, a nossa data, que foi escrita entre aspas como “2011-12-25”. Muitas vezes, ao pesquisar por ajuda com datas, você vê esta sintaxe referida como ‘aaaa-MM-DD’, onde Y é para o ano, M é para o mês, e D é para o dia, obviamente. Cada repetição é um símbolo de um espaço de caracteres em branco para esse elemento. Então, você só quer dois dígitos por mês porque isso faz sentido, e talvez você não se importa com os dois primeiros caracteres do ano. Em vez disso, escreves e recebes 11. Fácil o suficiente, para as maravilhosas datas
usando DATETIME em SQL
a nossa nova tabela “utilizadores” :
id | username | first | last | last_login |
---|---|---|---|---|
1 | ohBillNotAgain | Hillary | Clinton | 2011-12-24 12:59:15 |
2 | internetCreator | Al | Gore | 2011-12-24 11:53:25 |
3 | dontMessWithTexas | George | Bush | 2011-12-24 16:24:17 |
Agora, vamos tentar chegar a todos os nossos membros conectados antes de antes de 1:00 DE 24 de dezembro de 2011.
Exemplo
SELECT * FROM UsersWHERE last_login < '2011-12-24 13:00:00'
Resultado
id | nome de usuário | nome | last | last_login |
---|---|---|---|---|
1 | ohBillNotAgain | Hillary | Clinton | 2011-12-24 12:59:15 |
2 | internetCreator | Al | Gore | 2011-12-24 11:53:25 |
Pobre George… tudo Bem, exatamente a mesma sintaxe como um último um com excepção substituímos o nome da coluna e usado uma seqüência de data / hora para fazer a comparação. O tipo de dados DATETIME contém todos os mesmos elementos que o tipo de dados de data mais uma cadeia de tempo. Vulgarmente referenciado como’ aaaa-MM-DD HH:MM:SS ‘ novamente, em citações simples e com um espaço que separa a cadeia de datas da cadeia de tempo, criamos a nossa cadeia de datas para comparação. Hillary e Al fazem o corte porque eles entraram antes do 2011-12-24 13: 00:00 ‘ corta o DATETIME. É muito mais fácil aqui do que parece na prática. Isso é porque colocamos a cadeia de datas à mão. O SQL tem algumas funções de data com as quais você pode brincar que você pode substituir a nossa string por:
funções importantes de data SQL
Nota: as funções de data SQL diferem muito nas versões SQL. Estes são MySQL.
- CURDATE–) – obtém a data actual
- CURTIME–) – obtém a hora actual
- agora () – obtém tanto a data como a hora (no formato DATETIME)
Se não estiver a usar o MySQL, considere a mudança. Estou a brincar, mais ou menos, mas não se preocupe, uma simples consulta do Google irá ajudá-lo a encontrar as funções SQL certas para a sua base de dados SQL.