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

Выбрать только записи одного года

Я просто не могу найти способ добиться этого. Я в основном хочу получить записи того же года в базе данных. Поле является полем DATETIME, поэтому с ним легко выполнять вычисления.

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

Я почти наверняка знаю, что есть решение с условными операторами, но я недостаточно хорошо понимаю синтаксис, чтобы реализовать его. Я бы хотел уже что-то сделать, но все, что я знаю, это то, что я должен использовать INTERVAL, который отлично работает, когда у меня есть год, но этого недостаточно для этого случая.

SELECT date
FROM table WHERE 
date > (NOW() + INTERVAL 1 YEAR)

Может ли кто-нибудь помочь мне здесь?

22.12.2011

  • Вы хотите выбрать следующий календарный год (т.е. на сегодняшний день год, начинающийся 01.01.12) или 12-месячный период, начинающийся сегодня? Ваш вопрос, кажется, задает первое, но код касается последнего. 23.12.2011
  • @idoimaging О да, никогда не замечал этого ... Я действительно хочу выбрать следующий календарный год, правда! 23.12.2011

Ответы:


1
Select ...
From TableName 
where `date` BETWEEN concat(year(now()) + 1, '-01-01')
                 AND concat(year(now()) + 1, '-12-31')

Для now() == 2011-12-23 он вернет все строки, дата которых находится между 2012-01-01 и 2012-12-31.

UPD: как отметил @Nirmal в комментариях ниже, когда вы используете BETWEEN, вы всегда должны помнить, что он включает в себя как левые, так и правые значения. Таким образом, приведенный выше запрос будет включать только Dec 31st, 00:00:00, буквально только одну секунду целого дня. И это может привести к некоторым неожиданным результатам, если вас не волнует такой пограничный случай.

22.12.2011
  • Круто, я просто поставлю это в цикл, пока он не найдет несколько строк, и все будет хорошо. Большое спасибо!! Или, может быть, у вас даже есть идея, как я мог бы создать этот цикл прямо в MySQL? 23.12.2011
  • @Dan Surfrider: нет, тебе лучше сделать это на улице 23.12.2011
  • Не будут ли сюда включены записи, соответствующие 2013-01-01? Я считаю, что результаты должны быть отфильтрованы только до (и включительно) 2012-12-31. 12.02.2012
  • @Nirmal: правильно, он будет включать 2013-01-01 00:00:00, одну секунду от следующей даты. Обычно лучше дать ОП не полный ответ, а основную идею, как реализовать то, что он хочет. 12.02.2012
  • @zerkms: Учитывая, что многие не понимают, будут ли BETWEEN включать или исключать записи, попадающие в границу, уместно правильно их направить. Люди здесь, чтобы учиться, и их нельзя учить незаконченным урокам. 13.02.2012
  • @Nirmal: к сожалению, здесь слишком много людей, чтобы не учиться буквально, а копировать и вставлять полный код. Но на самом деле я должен был указать, что 13.02.2012
  • @Nirmal: тоже ошибся, 2013-01-01 не будет, а будет только одна секунда из Dec 31st дня 13.02.2012
  • @zerkms: Спасибо за редактирование. Да, я не понял, что это будет включать только 1 секунду 31 декабря. Это держит меня в курсе. Хороший день для тебя! 13.02.2012
  • Новые материалы

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

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

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

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

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

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

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