Как я могу получить первую и последнюю дату текущего года, используя SQL Server 2000?
Ожидаемый результат:
01/01/2012
и 31/12/2012
источник
Как я могу получить первую и последнюю дату текущего года, используя SQL Server 2000?
Ожидаемый результат:
01/01/2012
и 31/12/2012
SELECT
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS EndOfYear
Вышеупомянутый запрос дает значение datetime для полуночи в начале 31 декабря. Это примерно на 24 часа меньше последнего момента года. Если вы хотите включить время, которое может произойти 31 декабря, вам следует сравнить с первым годом следующего года <
. Или вы можете сравнить с несколькими последними миллисекундами текущего года, но это все равно оставляет пробел, если вы используете что-то другое, кроме DATETIME (например, DATETIME2):
SELECT
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS LastDayOfYear,
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0) AS FirstOfNextYear,
DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0)) AS LastTimeOfYear
Технические детали
Это работает путем вычисления количества лет, прошедших с 1900 года, с DATEDIFF(yy, 0, GETDATE())
последующим добавлением этого числа к дате, равной нулю = 1 января 1900 года. Это можно изменить для работы с произвольной датой, заменив GETDATE()
часть или произвольный год, заменив DATEDIFF(...)
функцию на «Год - 1900».
SELECT
DATEADD(yy, DATEDIFF(yy, 0, '20150301'), 0) AS StartOfYearForMarch2015,
DATEADD(yy, 2015 - 1900, 0) AS StartOfYearFor2015
Вот довольно простой способ;
SELECT DATEFROMPARTS(YEAR(GETDATE()), 1, 1) AS 'First Day of Current Year';
SELECT DATEFROMPARTS(YEAR(GETDATE()), 12, 31) AS 'End of Current Year';
Это не сексуально, но работает.
Вы можете получить текущий год с помощью
DATEPART
функции, начиная с текущей даты, полученной с помощьюgetUTCDate()
источник
DATETIME
вместо строки, и, очевидно, это может не соответствовать ожидаемому результату в соответствии с вопросом.yyyyMMdd
однозначно.просто напишите: -
дата начала года.
источник
Каждый год имеет 1-ю как первую дату и 31 как последнюю дату, что вам нужно сделать, это только присоединить год к этому дню и месяцу, например: -
источник
Чтобы получить первый и последний день года, можно использовать
CONCAT
функцию. Результирующее значение может быть приведено к любому типу.источник
На дату начала текущего года:
На дату окончания текущего года:
источник
Другой способ: (Начиная с SQL Server 2012)
источник
Посмотрите на это:
источник
источник
источник
Похоже, вам интересно выполнять все операции за данный год, если это действительно так, я бы рекомендовал использовать функцию YEAR () следующим образом:
То же самое касается ДЕНЬ () и МЕСЯЦ () . Они также доступны для вариантов MySQL / MariaDB и были введены в SQL Server 2008 (то есть не для конкретного 2000 года).
источник
источник
В Microsoft SQL Server (T-SQL) это можно сделать следующим образом
CURRENT_TIMESTAMP - возвращает дату sql-сервера на момент выполнения запроса.
ГОД - получает часть года текущей отметки времени.
STR , LTRIM - эти две функции применяются, чтобы мы могли преобразовать их в varchar, который можно объединить с нашим желаемым префиксом (в данном случае это либо первая дата года, либо последняя дата года). По какой-то причине результат, сгенерированный функцией YEAR, имеет пробелы в префиксе. Чтобы исправить их, мы используем функцию LTRIM, которая является обрезкой слева.
источник
Если он достигнет 1 января, возможно, это будет дата последнего года.
источник
Попробуй это:
источник
Msg 195, Level 15, State 10, Line 1 'NOW' is not a recognized function name.
--- Лалмуни Демос ---
--- вставить значения ---
источник