Если вы хотите получить тип данных без времени, даже если время 00:00:00, то вам не повезло, вы можете получить varchar, но структура - это время даты, и у вас всегда будет время.
@ Rohit Вы ошибочно полагаете, что 2008 год - единственная версия, которая волнует людей. (Есть больше версий в дикой природе.) Голоса говорят сами за себя.
hktegner
Ответы:
2487
На SQL Server 2008и выше, вы должны CONVERTна сегодняшний день:
+1 Похоже, этот на 35% быстрее, чем обычно используемый метод double convert () (который я также использовал годами). Хороший.
датчанин
8
Единственный недостаток, который я вижу в вашем решении, заключается в том, что, если вы не знаете, что он делает, это немного глупо. Использование метода двойного преобразования делает ваши намерения более очевидными для разработчиков кода. Кстати, я не проголосовал против вас. Я думаю, что я начну использовать ваш метод тоже. Спасибо @aku
Джим
38
@pilavdzice Установка DateTime в полночь этого дня делает Перестань ВРЕМЯ. Какой результат вы ожидаете? Тип datetimeданных не может иметь никакого времени вообще . Я думаю, что вы путаете хранение данных с презентацией пользователя. Если все, что вам нужно, это способ показать пользователю строку, которая не имеет временной части (не нули, просто пробелы), тогда вы просто хотите Convert(varchar(30), @Date, 101)или что-то подобное. См. Электронную документацию по SQL Server • Преобразование и преобразование для получения дополнительной информации.
ErikE
7
@ user1671639 тип данных datetime всегда содержит дату и время, вы не можете разумно хранить одно без другого - если только вы не используете SQL Server 2008, в этом случае также существуют отдельные данные «date» и «time» типы. Если вы используете CONVERT () подобным образом, вам действительно нужна строка для последующего использования, поэтому вы застрянете, делая это таким образом - хотя было бы лучше, если бы вы использовали функции форматирования даты вместо того, чтобы обрезать дату - или через CAST(... AS DATE)или CONVERT(DATE, ...), что упоминалось довольно часто на этой самой странице.
Магнус
10
Я рекомендую изменить ответ, SELECT DATEADD(dd, DATEDIFF(dd, 0, @your_date), 0)потому что тогда его ddможно заменить на любое другое datepartключевое слово, чтобы усечь его datetimeна произвольном уровне.
Майкл - Где Клэй Ширки
717
SQLServer 2008 теперь имеет тип данных «дата», который содержит только дату без компонента времени. Любой, кто использует SQLServer 2008 и выше, может сделать следующее:
В SQL2008 также существует тип данных time, который отвечает на другую половину вопроса о разделении даты и времени.
misteraidan
8
К вашему сведению, я сравнил различные методы отсечения времени от даты, и это был самый быстрый метод. Разумеется, разница была небольшой, но она была явно быстрее при большом количестве казней.
@FredrickGauss: какой тип, дата? Какую версию SQL Server вы используете?
Абатищев
7
Осторожно! объявлять @ date1 datetime = '2015-09-30 20: 59: 59.999'; выбор актера (@ date1 как дата) возвращает '2015-10-01'
Ник
6
@Nick: это проблема с DateTime. используйте DateTime2вместо этого, и он работает нормально. sqlfiddle.com/#!6/9eecb7/2833
абатищев
8
@ Ник, чтобы дополнить ответ Абатищева, твоя @ date1 действительно 2015-10-01, из-за DateTimeограничений. Попробуйте без какого-либо броска Date, это 2015-10-01тоже дает ! declare @date1 datetime = '2015-09-30 23:59:59.999';select @date1=>2015-10-01
Фредерик
4
Один из этих легко запоминающихся трюков SQL. Как говорит Майк, только в 2008 году, но, если вы найдете где-то 2005 и предыдущую БД, у вас может быть много проблем :)
NicVerAZ
73
DATEADD и DATEDIFF лучше, чем преобразование в varchar. Оба запроса имеют один и тот же план выполнения, но планы выполнения в основном касаются стратегий доступа к данным и не всегда показывают неявные затраты, связанные с затратами времени ЦП на выполнение всех этапов. Если оба запроса выполняются к таблице с миллионами строк, время ЦП с использованием DateDiff может быть близко к 1/3 времени преобразования ЦП!
Чтобы увидеть планы выполнения запросов:
set showplan_text on
GO
И DATEADD, и DATEDIFF будут выполнять CONVERT_IMPLICIT.
Хотя решение CONVERT проще и легче читать для некоторых, это является более медленным. Нет необходимости приводить обратно к datetime (это неявно делается сервером). Также нет реальной необходимости в методе DateDiff для DateAdd, поскольку целочисленный результат также будет неявно преобразован обратно в datetime.
ВЫБЕРИТЕ КОНВЕРТ (varchar, MyDate, 101) ИЗ DatesTable
Использование FLOOR (), как предложено @digi, имеет производительность ближе к DateDiff, но не рекомендуется, так как приведение типа данных datetime к плавающей и обратно не всегда приводит к исходному значению.
Помните, ребята: не верьте никому. Посмотрите статистику производительности и проверьте сами!
Будьте осторожны при тестировании своих результатов. Выбор множества строк для клиента позволит скрыть разницу в производительности, поскольку для отправки строк по сети требуется больше времени, чем для выполнения вычислений. Поэтому убедитесь, что работа для всех строк выполняется сервером, но нет набора строк, отправленного клиенту.
У некоторых людей возникает путаница, когда оптимизация кэша влияет на запросы. Выполнение двух запросов в одном пакете или в разных пакетах не влияет на кэширование. Таким образом, вы можете либо завершить кеш вручную, либо просто выполнять запросы туда-сюда несколько раз. Любая оптимизация для запроса № 2 также повлияет на любые последующие запросы, поэтому, если хотите, исключите выполнение # 1.
Рикардо С, хорошее расследование! Какую версию SQL-сервера вы используете? На MSSQL2000 метод с datediff для меня работает чуть быстрее.
Ака
Просто чтобы отметить, я выполнил тест 1000.000 раз. Для реальных сценариев разница в производительности не будет заметна, я думаю
aku
Аку, я использовал SQL Server 2005 Express для этого теста. Я работаю в 2000 году на работе, и я протестирую ее с таблицей с более чем 24 миллионами строк и посмотрю, что из этого получится.
Рикардо С
Аку, те же результаты. Нет разницы в производительности более десяти миллионов строк.
Рикардо С
5
Заявления о равных показателях не соответствуют действительности. Конечно планы выполнения будут такими же !!! Измерение производительности на них ДОЛЖНО быть сделано путем сравнения использования ЦП, а не изучения планов выполнения.
ErikE
51
Попробуй это:
SELECTCONVERT(VARCHAR(10),GETDATE(),111)
Приведенное выше заявление преобразует ваш текущий формат в YYYY/MM/DD, пожалуйста, перейдите по этой ссылке, чтобы выбрать предпочтительный формат.
Этот метод не является самым быстрым, и также косвенно учит людей, что точные даты приведения являются точными, а это не так. Пожалуйста, смотрите этот пост для более подробной информации.
ErikE
13
Если вы используете SQL Server 2012 или более позднюю версию ,
Уже есть несколько ответов и типов форматирования для сервера SQL. Но большинство методов несколько двусмысленны, и вам будет сложно запомнить числа для типа формата или функций относительно конкретного формата даты. Вот почему в следующих версиях SQL-сервера есть лучший вариант.
FORMAT ( value, format [, culture ])
Опция культуры очень полезна, так как вы можете указать дату согласно вашим зрителям.
Вы должны запомнить d (для маленьких рисунков) и D (для длинных рисунков).
2009-06-15T13:45:30-> Monday, June 15,2009(en-US)2009-06-15T13:45:30->15июня2009г.(ru-RU)2009-06-15T13:45:30-> Montag,15. Juni 2009(de-DE)
Больше примеров в запросе.
DECLARE@d DATETIME ='10/01/2011';SELECT FORMAT (@d,'d','en-US')AS'US English Result',FORMAT (@d,'d','en-gb')AS'Great Britain English Result',FORMAT (@d,'d','de-de')AS'German Result',FORMAT (@d,'d','zh-cn')AS'Simplified Chinese (PRC) Result';SELECT FORMAT (@d,'D','en-US')AS'US English Result',FORMAT (@d,'D','en-gb')AS'Great Britain English Result',FORMAT (@d,'D','de-de')AS'German Result',FORMAT (@d,'D','zh-cn')AS'Chinese (Simplified PRC) Result';
US English Result Great Britain English Result German Result Simplified Chinese (PRC) Result
---------------- ----------------------------- ------------- -------------------------------------10/1/201101/10/201101.10.20112011/10/1
US English Result Great Britain English Result German Result Chinese (Simplified PRC) Result
---------------------------- ----------------------------- ----------------------------- ---------------------------------------
Saturday, October 01,201101 October 2011 Samstag,1. Oktober 20112011年10月1日
Если вы хотите больше форматов, вы можете перейти к:
Если вы хотите использовать CONVERT и получить тот же вывод, что и в исходном поставленном вопросе, то есть yyyy-mm-dd, затем использовать CONVERT(varchar(10),[SourceDate as dateTime],121)тот же код, что и ответы предыдущей пары, но код для преобразования в yyyy-mm-dd с тире 121.
Если я смогу войти в свой мыльный ящик на секунду, этот вид форматирования не относится к уровню данных , и поэтому он был невозможен без глупых трюков с высокими накладными расходами до SQL Server 2008, когда действительные типы данных datepart представил. Выполнение таких преобразований на уровне данных является огромной тратой накладных расходов на вашу СУБД, но, что более важно, в момент, когда вы делаете что-то подобное, вы в основном создавали потерянные в памяти данные, которые, как я полагаю, затем вы вернетесь в программу. Вы не можете поместить его обратно в другой столбец 3NF + или сравнить его с чем-либо набранным без возврата, поэтому все, что вы сделали, - это добавили точки отказа и удалили реляционную ссылку.
Вы должны ВСЕГДА идти вперед и возвращать свой тип данных dateTime в вызывающую программу и на уровне PRESENTATION вносить любые необходимые изменения. Как только вы преобразуете вещи перед тем, как возвращать их вызывающей стороне, вы удаляете все надежды на ссылочную целостность из приложения. Это предотвратит операцию ОБНОВЛЕНИЕ или УДАЛЕНИЕ, опять же, если вы не сделаете какую-то ручную реверсию, которая снова подвергает ваши данные ошибкам человека / кода / гремлина, когда в этом нет необходимости.
За исключением, скажем, если вы хотите запрос, который извлекает все записи, соответствующие предоставленной пользователем дате, как часть даты определенного поля времени. Удачи, делая это только на уровне представления. (Вам не нужно конвертировать, вы можете использовать арифметику дат, но вы поняли ...)
Эндрю Лазарь
1
@ Андрей, почему это важно? Вы говорите WHERE col >= @Date AND col < DATEADD(DAY, 1, @Date);- нет абсолютно никакой причины убирать время из колонки.
Аарон Бертран
1
@AaronBertrand Это работает только при условии, что вход @Dateимеет нулевую часть времени. В случае, если это не так, вам все равно нужно знать, как сократить время на стороне сервера. Я согласен с этим ответом, что форматирование должно быть оставлено на уровне представления, но я не согласен с тем, что если оставить его для внешнего интерфейса, вам не нужно знать быстрый способ усечения.
Андрей Лазарь
1
@ Андрей все, что вам нужно сделать, это сделать входной параметр DATE. Я по-прежнему считаю, что вам никогда не придется применять любое подобное усечение к столбцу , даже если это первый инстинкт большинства людей.
Аарон Бертран,
1
@AaronBertrand и это предполагает, что у вас есть контроль над типом данных параметра. Штраф в хранимой процедуре, не так возможно в других ситуациях. Почему бы не приводить, чтобы убедиться, что параметр того типа, который вам нужен и нужен?
Все эти методы хороши, но какой из них вы предлагаете?
Eddiegroves
3
Обратите внимание , что «правильный» вариант в верхних два это select dateadd(dd, datediff(dd, 0, getdate()), 0), потому что dds может быть выгружен для любого из тех datepartключевых слов , чтобы отсечь дату в любом сегменте вы выбираете. (Также обратите внимание, что ddэто просто аббревиатура для day.)
Майкл - Где Клэй Ширки
10
Чтобы получить указанный результат, я использую следующую команду.
Ваш первый пример все еще имеет компонент времени. Суть вопроса заключалась в том, как это убрать.
Зак
5
Даже используя древний MSSQL Server 7.0, код здесь (благодаря этой ссылке ) позволил мне получить любой формат даты, который я искал в то время:
PRINT'1) Date/time in format MON DD YYYY HH:MI AM (OR PM): '+CONVERT(CHAR(19),GETDATE())PRINT'2) Date/time in format MM-DD-YY: '+CONVERT(CHAR(8),GETDATE(),10)PRINT'3) Date/time in format MM-DD-YYYY: '+CONVERT(CHAR(10),GETDATE(),110)PRINT'4) Date/time in format DD MON YYYY: '+CONVERT(CHAR(11),GETDATE(),106)PRINT'5) Date/time in format DD MON YY: '+CONVERT(CHAR(9),GETDATE(),6)PRINT'6) Date/time in format DD MON YYYY HH:MM:SS:MMM(24H): '+CONVERT(CHAR(24),GETDATE(),113)
Это произвело этот вывод:
1) Date/time in format MON DD YYYY HH:MI AM (OR PM): Feb 2720151:14PM
2) Date/time in format MM-DD-YY:02-27-153) Date/time in format MM-DD-YYYY:02-27-20154) Date/time in format DD MON YYYY:27 Feb 20155) Date/time in format DD MON YY:27 Feb 156) Date/time in format DD MON YYYY HH:MM:SS:MMM(24H):27 Feb 201513:14:46:630
select {fn current_date()} as todayработает для меня.
brianary
@brianary - Это хорошо, но это не ANSI SQL.
горит
Это достаточно справедливо, и ваш ответ хорошо переносим, но я подумал, что пока мы работаем над T-SQL, это тоже работает (и показывает, что реализация ANSI CURRENT_DATE будет тривиальной для MS).
brianary
4
Я поддерживаю следующее, которое не было упомянуто:
Он также не заботится о локальном или двойном преобразовании - хотя каждый «datepart», вероятно, выполняет математику. Так что это может быть немного медленнее, чем метод датедифф, но для меня это гораздо более понятно. Особенно, когда я хочу сгруппировать по году и месяцу (установите день на 1).
Вы можете использовать следующие для части даты и форматирования даты:
DATENAME => Возвращает символьную строку, которая представляет указанную часть даты указанной даты
DATEADD => DATEPART()Функция используется для возврата одной части даты / времени, такой как год, месяц, день, час, минута и т. Д.
DATEPART => Возвращает целое число, которое представляет указанную часть даты указанной даты.
CONVERT()=> CONVERT()Функция - это общая функция, которая преобразует выражение одного типа данных в другой. Эта
CONVERT()функция может использоваться для отображения даты / времени в разных форматах.
Ответы:
На
SQL Server 2008
и выше, вы должныCONVERT
на сегодняшний день:В старых версиях вы можете сделать следующее:
например
дает мне
Плюсы:
varchar
<->datetime
преобразований требуетсяlocale
По предложению Майкла
Используйте этот вариант:
SELECT DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
Вывод:
источник
datetime
данных не может иметь никакого времени вообще . Я думаю, что вы путаете хранение данных с презентацией пользователя. Если все, что вам нужно, это способ показать пользователю строку, которая не имеет временной части (не нули, просто пробелы), тогда вы просто хотитеConvert(varchar(30), @Date, 101)
или что-то подобное. См. Электронную документацию по SQL Server • Преобразование и преобразование для получения дополнительной информации.CAST(... AS DATE)
илиCONVERT(DATE, ...)
, что упоминалось довольно часто на этой самой странице.SELECT DATEADD(dd, DATEDIFF(dd, 0, @your_date), 0)
потому что тогда егоdd
можно заменить на любое другоеdatepart
ключевое слово, чтобы усечь егоdatetime
на произвольном уровне.SQLServer 2008 теперь имеет тип данных «дата», который содержит только дату без компонента времени. Любой, кто использует SQLServer 2008 и выше, может сделать следующее:
источник
Если используется SQL 2008 и выше:
источник
DateTime2
вместо этого, и он работает нормально. sqlfiddle.com/#!6/9eecb7/28332015-10-01
, из-заDateTime
ограничений. Попробуйте без какого-либо броскаDate
, это2015-10-01
тоже дает !declare @date1 datetime = '2015-09-30 23:59:59.999';select @date1
=>2015-10-01
DATEADD и DATEDIFF лучше, чем преобразование в varchar. Оба запроса имеют один и тот же план выполнения, но планы выполнения в основном касаются стратегий доступа к данным и не всегда показывают неявные затраты, связанные с затратами времени ЦП на выполнение всех этапов. Если оба запроса выполняются к таблице с миллионами строк, время ЦП с использованием DateDiff может быть близко к 1/3 времени преобразования ЦП!
Чтобы увидеть планы выполнения запросов:
И DATEADD, и DATEDIFF будут выполнять CONVERT_IMPLICIT.
Хотя решение CONVERT проще и легче читать для некоторых, это является более медленным. Нет необходимости приводить обратно к datetime (это неявно делается сервером). Также нет реальной необходимости в методе DateDiff для DateAdd, поскольку целочисленный результат также будет неявно преобразован обратно в datetime.
ВЫБЕРИТЕ КОНВЕРТ (varchar, MyDate, 101) ИЗ DatesTable
ВЫБЕРИТЕ DATEADD (dd, 0, DATEDIFF (dd, 0, MyDate)) FROM DatesTable
Использование FLOOR (), как предложено @digi, имеет производительность ближе к DateDiff, но не рекомендуется, так как приведение типа данных datetime к плавающей и обратно не всегда приводит к исходному значению.
Помните, ребята: не верьте никому. Посмотрите статистику производительности и проверьте сами!
Будьте осторожны при тестировании своих результатов. Выбор множества строк для клиента позволит скрыть разницу в производительности, поскольку для отправки строк по сети требуется больше времени, чем для выполнения вычислений. Поэтому убедитесь, что работа для всех строк выполняется сервером, но нет набора строк, отправленного клиенту.
У некоторых людей возникает путаница, когда оптимизация кэша влияет на запросы. Выполнение двух запросов в одном пакете или в разных пакетах не влияет на кэширование. Таким образом, вы можете либо завершить кеш вручную, либо просто выполнять запросы туда-сюда несколько раз. Любая оптимизация для запроса № 2 также повлияет на любые последующие запросы, поэтому, если хотите, исключите выполнение # 1.
Вот полный тестовый скрипт и результаты производительности, которые доказывают, что DateDiff существенно быстрее, чем конвертация в varchar.
источник
Попробуй это:
Приведенное выше заявление преобразует ваш текущий формат в
YYYY/MM/DD
, пожалуйста, перейдите по этой ссылке, чтобы выбрать предпочтительный формат.источник
mm/dd/yyyy
формат.источник
Для возврата в формате даты
Приведенный выше код будет работать в SQL Server 2010
Он вернется, как 12.12.2013
Для SQL Server 2012 используйте следующий код
источник
Вы можете использовать
CONVERT
функцию, чтобы вернуть только дату. Смотрите ссылку (ы) ниже:Манипуляции с датой и временем в SQL Server 2000
АКТЕРЫ и КОНВЕРТ
Синтаксис для использования функции преобразования:
источник
Если вам нужен результат как
varchar
, вы должны пройти черезкоторый уже упоминался выше.
Если вам нужен результат в формате даты и времени, вы должны использовать любой из запросов ниже
источник
источник
Использование FLOOR () - просто отрезать часть времени.
источник
Если вы используете SQL Server 2012 или более позднюю версию ,
Используйте
Format()
функцию.Уже есть несколько ответов и типов форматирования для сервера SQL. Но большинство методов несколько двусмысленны, и вам будет сложно запомнить числа для типа формата или функций относительно конкретного формата даты. Вот почему в следующих версиях SQL-сервера есть лучший вариант.
Опция культуры очень полезна, так как вы можете указать дату согласно вашим зрителям.
Вы должны запомнить d (для маленьких рисунков) и D (для длинных рисунков).
1. «d» - образец короткой даты.
2. «Д» - длинный шаблон даты.
Больше примеров в запросе.
Если вы хотите больше форматов, вы можете перейти к:
источник
Если вы хотите использовать CONVERT и получить тот же вывод, что и в исходном поставленном вопросе, то есть yyyy-mm-dd, затем использовать
CONVERT(varchar(10),[SourceDate as dateTime],121)
тот же код, что и ответы предыдущей пары, но код для преобразования в yyyy-mm-dd с тире 121.Если я смогу войти в свой мыльный ящик на секунду, этот вид форматирования не относится к уровню данных , и поэтому он был невозможен без глупых трюков с высокими накладными расходами до SQL Server 2008, когда действительные типы данных datepart представил. Выполнение таких преобразований на уровне данных является огромной тратой накладных расходов на вашу СУБД, но, что более важно, в момент, когда вы делаете что-то подобное, вы в основном создавали потерянные в памяти данные, которые, как я полагаю, затем вы вернетесь в программу. Вы не можете поместить его обратно в другой столбец 3NF + или сравнить его с чем-либо набранным без возврата, поэтому все, что вы сделали, - это добавили точки отказа и удалили реляционную ссылку.
Вы должны ВСЕГДА идти вперед и возвращать свой тип данных dateTime в вызывающую программу и на уровне PRESENTATION вносить любые необходимые изменения. Как только вы преобразуете вещи перед тем, как возвращать их вызывающей стороне, вы удаляете все надежды на ссылочную целостность из приложения. Это предотвратит операцию ОБНОВЛЕНИЕ или УДАЛЕНИЕ, опять же, если вы не сделаете какую-то ручную реверсию, которая снова подвергает ваши данные ошибкам человека / кода / гремлина, когда в этом нет необходимости.
источник
WHERE col >= @Date AND col < DATEADD(DAY, 1, @Date);
- нет абсолютно никакой причины убирать время из колонки.@Date
имеет нулевую часть времени. В случае, если это не так, вам все равно нужно знать, как сократить время на стороне сервера. Я согласен с этим ответом, что форматирование должно быть оставлено на уровне представления, но я не согласен с тем, что если оставить его для внешнего интерфейса, вам не нужно знать быстрый способ усечения.Редактировать: первые два метода, по сути, одинаковы, и выполнить преобразование в метод varchar.
источник
select dateadd(dd, datediff(dd, 0, getdate()), 0)
, потому чтоdd
s может быть выгружен для любого из техdatepart
ключевых слов , чтобы отсечь дату в любом сегменте вы выбираете. (Также обратите внимание, чтоdd
это просто аббревиатура дляday
.)Чтобы получить указанный результат, я использую следующую команду.
Я Holpe это полезно.
источник
источник
Если вы присваиваете результаты столбцу или переменной, присвойте ему тип DATE, и преобразование будет неявным.
источник
Я думаю, что это будет работать в вашем случае:
источник
источник
Хорошо, хотя я немного опоздал :), вот другое решение.
Результат
И если вы используете SQL Server 2012 и выше, вы можете использовать
FORMAT()
такую функцию -источник
Даже используя древний MSSQL Server 7.0, код здесь (благодаря этой ссылке ) позволил мне получить любой формат даты, который я искал в то время:
Это произвело этот вывод:
источник
Свидание:
Время:
источник
Просто вы можете сделать это так:
Выходы как:
Или просто сделайте так:
Результат:
источник
почему вы не используете DATE_FORMAT (your_datetiem_column, '% d-% m-% Y')?
EX:
select DATE_FORMAT( some_datetime_column, '%d-%m-%Y' ) from table_name
Вы можете изменить последовательность m, d и год, переставив
'%d-%m-%Y'
частьисточник
Я знаю, что это старо, но я не вижу, где кто-то так сказал. Из того, что я могу сказать, это стандарт ANSI.
Было бы хорошо, если бы Microsoft также могла поддерживать стандартную переменную ANSI CURRENT_DATE.
источник
select {fn current_date()} as today
работает для меня.Я поддерживаю следующее, которое не было упомянуто:
Он также не заботится о локальном или двойном преобразовании - хотя каждый «datepart», вероятно, выполняет математику. Так что это может быть немного медленнее, чем метод датедифф, но для меня это гораздо более понятно. Особенно, когда я хочу сгруппировать по году и месяцу (установите день на 1).
источник
Начиная с SQL SERVER 2012, вы можете сделать это:
SELECT FORMAT(GETDATE(), 'yyyy-MM-dd 00:00:00.000')
источник
На SQL Server 2000
источник
В этом случае, только дата, вы нам запустите этот запрос:
ВЫБЕРИТЕ КОНВЕРТ (VARCHAR (10), getdate (), 111);
источник
Вы можете использовать следующие для части даты и форматирования даты:
DATENAME => Возвращает символьную строку, которая представляет указанную часть даты указанной даты
DATEADD =>
DATEPART()
Функция используется для возврата одной части даты / времени, такой как год, месяц, день, час, минута и т. Д.DATEPART => Возвращает целое число, которое представляет указанную часть даты указанной даты.
CONVERT()
=>CONVERT()
Функция - это общая функция, которая преобразует выражение одного типа данных в другой. ЭтаCONVERT()
функция может использоваться для отображения даты / времени в разных форматах.источник