Nano Hash - криптовалюты, майнинг, программирование

SQLite Select Query не получает все записи

У меня есть 3 записи, добавленные в мою базу данных, одно из полей содержит дату, сохраненную в виде строки, когда я запрашиваю «SELECT * FROM 'TABLE'», я получаю все 3 из них, затем, когда я печатаю их соответствующую дату, я получаю , в этом примере

2019-5-4 14:20:00

2019-6-4 14:20:00

2019-7-4 14:20:00

Но когда я пытаюсь использовать «SELECT * FROM 'TABLE' WHERE DATE BETWEEN '2019-4-1' И '2019-7-10'», запрос содержит первые два результата, но не последний. Он будет содержать 3-й, когда я изменю месяц с 7 на 8 или когда день во второй дате изменится с двузначного на однозначный, поэтому все от 4 до 9, вместо 2019-7-10 будет 2019 -7-9.

Как я могу получить все результаты, используя двузначные числа в качестве дней во второй дате?


  • stackoverflow. ком/вопросы/29971762/ 04.05.2019
  • Измените формат дат на YYYY-MM-DD. Используемый вами формат несопоставим, поскольку в SQLite нет типа данных Date. Даты хранятся как TEXT, поэтому: '2019-10-10' считается меньше '2019-7-10'. 04.05.2019

Ответы:


1

Если вы хотите сравнить даты, игнорируя временные метки, вам нужно сделать это явно: SELECT * FROM 'TABLE' WHERE DATE(DATE) BETWEEN '2019-04-01' AND '2019-07-10'"

04.05.2019
  • Я не думаю, что это работает, я предполагаю, что одна ДАТА - это имя столбца, содержащего дату, верно? Когда я добавляю это (дату), запрос возвращает 0 результатов 04.05.2019
  • Добавляете ли вы правильный нулевой отступ ISO к месяцам и дням? 2019-04-01 вместо 2019-4-1 04.05.2019
  • DATE() — это имя функции, которое следует использовать, если вы не сравниваете метки времени (час дня, только дату). Если имя столбца signup_date, следует использовать DATE(signup_date). Если имя столбца date, следует использовать DATE(date). Если, конечно, SQLite позволяет вам называть столбец зарезервированным словом с его собственным синтаксисом, например DATE. Разрешено или нет в SQLite, это запрещено в других движках баз данных и является плохой и опасной привычкой, ИМХО. 04.05.2019
  • Я не сохранял строки даты в базе данных, как вы сказали 2019-04-01, а как 2019-4-1. Теперь, когда я изменил его, все работает. Похоже, когда вы пропускаете 0 перед числами дня и месяца, это работает, но не совсем так. 04.05.2019
  • В SQLite DATE('2019-7-10') возвращает NULL. 04.05.2019
  • Но DATE('2019-07-10') работает, как и должно быть написано. Пожалуйста, прочитайте мой ответ ;-) 04.05.2019
  • @Wiktor, это потому, что когда вы опускаете эти нули, SQLite не определяет значения как даты, поэтому сохраняет их как обычные строки (и, следовательно, сравнивает значения в запросах, когда сравнивает обычные строки, кот, гитара, 1234, 2019 -1-4... ни одна из них не является датой для двигателя). В тот момент, когда вы вставите правильные даты, движок сможет сравнить их как даты. Я рад, что теперь это работает! 04.05.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..