Как найти минимальную дату sql
Перейти к содержимому

Как найти минимальную дату sql

  • автор:

Нахождение минимальной и максимальной дат SQL

Ты можешь получить min , max даты в подзапросе, а затем могут получить результаты.

или вы можете сделать это с in а также union

Выберите min(dateColumn),max(dateColumn) из таблицы;

Нечто похожее на следующее, хотя и с небольшим количеством подзапросов, может дать вам самое близкое к тому, что вам нужно. В зависимости от разновидности вашего SQL (Oracle, SQLServer, MySQL и т. Д.) Вы можете ограничить подзапросы для выбора member_id внутри подзапросов набора результатов IN.

Получить минимальную дату в двух строках таблицы SQL

Изображение 51772

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

Изображение 51773

Я знаю, что я могу написать

Однако, это только найдет минимальную дату в столбце PR_create_date. Как найти минимальную дату в столбцах PR_create_date или AC_create_date?

5 ответов

Вы можете использовать

Функция least возвращает минимальное значение своих аргументов.

Но если один из аргументов NULL , то результат тоже NULL . Таким образом, вы должны написать некоторую логику для обработки нулей, в зависимости от того, как нулевые значения должны обрабатываться в вашей бизнес-логике: например, вы можете использовать «специальную дату» в далеком прошлом или будущем для замены нулей как

Но в простейшем случае, когда даты исключаются (т.е. в каждой строке точно одна из дат равна нулю), ее достаточно, чтобы просто написать

SQL Выбор максимальной и минимальной даты в разных строках

Спасибо за ваше время! Для каждого пользователя я хочу вывести один столбец, содержащий их самую раннюю дату вступления в силу и последнюю дату окончания, а также другие столбцы из этой и других таблиц (этот материал одинаков для каждого пользователя). Ниже представлен формат входных данных.

В основном это то, что я бы предпочел в результате:

Вот что я пробовал:

Когда я запустил это, такие пользователи, как 003 и 004 выше, показывались нормально, но такие пользователи, как 001 и 002, не появлялись вообще.

Я новичок в SQL, поэтому могу совершить очень серьезную ошибку. Не стесняйтесь сообщить мне, если это так. Кроме того, у меня нет контроля над источником данных, поэтому я не могу исправить это в источнике. Единственная причина, по которой я узнал об этом, заключалась в использовании SQL для вывода каждой пользовательской записи и последующем использовании VBA для сборки записей. К сожалению, это не долгосрочное решение.

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация, и я ценю все, толчка в правильном направлении может быть достаточно, чтобы помочь мне решить эту проблему. Еще раз спасибо за ваше время!

SQL Server function to return minimum date (January 1, 1753)

I am looking for a SQL Server function to return the minimum value for datetime, namely January 1, 1753. I’d rather not hardcode that date value into my script.

Does anything like that exist? (For comparison, in C#, I could just do DateTime.MinValue) Or would I have to write this myself?

I am using Microsoft SQL Server 2008 Express.

10 Answers 10

You could write a User Defined Function that returns the min date value like this:

Then use that function in your scripts, and if you ever need to change it, there is only one place to do that.

Alternately, you could use this query if you prefer it for better readability:

Example Function

Usage

Have you seen the SqlDateTime object? use SqlDateTime.MinValue to get your minimum date (Jan 1 1753).

As I can not comment on the accepted answer due to insufficeint reputation points my comment comes as a reply.

using the select cast(‘1753-1-1’ as datetime) is due to fail if run on a database with regional settings not accepting a datestring of YYYY-MM-DD format.

Instead use the select cast(-53690 as datetime) or a Convert with specified datetime format.

Enter the date as a native value ‘yyyymmdd’ to avoid regional issues:

Yes, it would be great if TSQL had MinDate() = ‘00010101’ , but no such luck.

Pang's user avatar

Here is a fast and highly readable way to get the min date value

Note: This is a Deterministic Function, so to improve performance further we might as well apply WITH SCHEMABINDING to the return value.

Create a function

Call the function

Example 1

Example 2

Example 3

Example 4

Example 5

WonderWorker's user avatar

It’s not January 1, 1753 but select cast(» as datetime) wich reveals: 1900-01-01 00:00:00.000 gives the default value by SQL server. (Looks more uninitialized to me anyway)

This is what I use to get the minimum date in SQL Server. Please note that it is globalisation friendly:

Phil C's user avatar

What about the following?

Disclaimer: The following code is not pretty. It is not a best practice to rely on Try/Catch statments. It also does not meet the requirement of the original poster for it to be a function since functions may not contain Try/Catch statements.

That being said, the following SQL code will give you the Minimum date or Maximum date (bonus) without using any magic numbers. It runs fast enough so as long as you don’t embed it in a loop, speed won’t be an issue. I show the statements here as one line of code so they can be easily copy/pasted and inserted into a stored procedure without using up a lot of space and distracting from the main SP itself.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *