Як повернути тільки Дату з типу даних SQL Server DateTime


1777
SELECT GETDATE()

Повернення: 2008-09-22 15:24:13.790

Я хочу, щоб частина дати без часової частини: 2008-09-22 00:00:00.000

Як я можу це отримати?


4
Якщо ви хочете отримати тип даних про дату без часу, навіть якщо час 00:00:00, то вам не пощастило, ви можете отримати варчар, але структура є датою, і ви завжди матимете деякий час.
Квінтін Робінсон,

16
Варто зазначити, що SQL Server 2008 включає окремий тип даних DATE для зберігання дат без компонента часу. Більше інформації тут: sql-server-performance.com/articles/dev/datetime_2008_p1.aspx
Бен Хофштейн

7
Не пропустіть цей пост, де відображаються результати тестування ефективності різних методів зняття часу.
ErikE

18
Не обманюйте голоси та прийняту відповідь, подивіться на stackoverflow.com/a/126984/1155650
Rohit Vipin Mathews

8
@Rohit Ви неправильно припускаєте, що 2008 рік є єдиною версією, якій люди хвилюються. (У дикій природі є більше версій.) Голоси говорять самі за себе.
hktegner

Відповіді:


2487

На SQL Server 2008новіших версіях вам слід CONVERTпобачити:

SELECT CONVERT(date, getdate())

У старих версіях ви можете зробити наступне:

SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, @your_date))

наприклад

SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))

дає мені

2008-09-22 00:00:00.000

Плюси:

  • Не потрібні varchar<-> datetimeконверсії
  • Не потрібно думати locale

За пропозицією Майкла

Використовуйте цей варіант: SELECT DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)

select getdate()

SELECT DATEADD(hh, DATEDIFF(hh, 0, getdate()), 0)
SELECT DATEADD(hh, 0, DATEDIFF(hh, 0, getdate()))

SELECT DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, getdate()))

SELECT DATEADD(mm, DATEDIFF(mm, 0, getdate()), 0)
SELECT DATEADD(mm, 0, DATEDIFF(mm, 0, getdate()))

SELECT DATEADD(yy, DATEDIFF(yy, 0, getdate()), 0)
SELECT DATEADD(yy, 0, DATEDIFF(yy, 0, getdate()))

Вихід:

2019-04-19 08:09:35.557

2019-04-19 08:00:00.000
4763-02-17 00:00:00.000

2019-04-19 00:00:00.000
2019-04-19 00:00:00.000

2019-04-01 00:00:00.000
1903-12-03 00:00:00.000

2019-01-01 00:00:00.000
1900-04-30 00:00:00.000

52
+1 Схоже, цей метод на 35% швидший, ніж метод подвійного перетворення (), який зазвичай використовується (який я також використовую роками). Хороший.
Датчанин

8
Єдиний недолік, який я бачу у вашому рішенні, - це те, що якщо ви не знаєте, що це робить, це трохи тупість. Використання методу подвійного перетворення робить ваші наміри більш очевидними для повного обслуговування коду. До речі, я тебе не прихильнив. Я думаю, я також почну використовувати ваш метод. Thankyou @aku
Джим

38
@pilavdzice Установка DateTime опівночі цього дня робить Перестань ЧАС. Якого результату ви очікуєте? Тип datetimeданих взагалі не може мати часу . Думаю, ви плутаєте сховище даних із презентацією користувача. Якщо все, що вам потрібно, це спосіб показати користувачеві рядок, яка не має часової частини (не нулі, просто пробіли), то ви просто хочете Convert(varchar(30), @Date, 101)або щось подібне. Див. Розділ Книги SQL Server Online • Передача та перетворення для отримання додаткової інформації.
ErikE

7
@ user1671639 Тип даних дата завжди містить і дату, і час, ви не зможете зберігати одне без іншого - якщо ви не використовуєте SQL Server 2008, і в цьому випадку також є окремі дані "дата" та "час" типи. Якщо ви використовуєте CONVERT () таким чином, ви дійсно хочете рядок для подальшого використання, тому ви будете застрягти, роблячи це так - хоча було б краще, якщо ви використовували функції форматування дати замість того, щоб скорочувати дату - або через CAST(... AS DATE)або CONVERT(DATE, ...), що досить часто згадується на цій самій сторінці.
Магнус

10
Рекомендую змінити відповідь, SELECT DATEADD(dd, DATEDIFF(dd, 0, @your_date), 0)оскільки тоді ddїї можна замінити на будь-яке інше datepartключове слово, щоб обрізати ваше datetimeна довільному рівні.
Майкл - Де Клей Ширкий

717

Тепер у SQLServer 2008 є тип даних "дата", який містить лише дату без компонента часу. Усі, хто використовує SQLServer 2008 та новіші версії, можуть зробити наступне:

SELECT CONVERT(date, GETDATE())

41
Також у SQL2008 існує тип даних "час", який відповідає іншій половині питання про розділення дати та часу.
misteraidan

8
FYI, я відмітив різні методи обрізання часу від дат, і це був найшвидший метод. Різниця була невеликою, але це було явно швидше за велику кількість страт.
UnhandledExcepSean

2
wt про sqlserver 2005 ??
Д-р МАФ

@ Dr.MAF закільцювання, відповідь до 2008 тут: stackoverflow.com/questions/113045 / ...
Frosty840

170

Якщо використовується SQL 2008 і вище:

select cast(getdate() as date)

3
@FredrickGauss: Який тип, дата? Яку версію SQL Server ви використовуєте?
абатищев

7
Остерігайся! оголосити @ date1 datetime = '2015-09-30 20: 59: 59.999'; select cast (@ date1 as date) повертається '2015-10-01'
Nick

6
@Nick: це проблема з DateTime. використовувати DateTime2замість цього, і це працює чудово. sqlfiddle.com/#!6/9eecb7/2833
абатищев

8
@Nick, щоб доповнити абатищев відповідь, ваша @ 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 кращі, ніж ПОВЕРНЕННЯ варчару. Обидва запити мають однаковий план виконання, але плани виконання стосуються насамперед стратегій доступу до даних і не завжди виявляють неявні витрати, пов'язані з процесорним часом, необхідним для виконання всіх фрагментів. Якщо обидва запити проводяться проти таблиці з мільйонами рядків, час процесора за допомогою DateDiff може бути близьким до 1/3 часу конвертувати процесор!

Щоб побачити плани виконання запитів:

set showplan_text on
GO 

І DATEADD, і DATEDIFF виконають CONVERT_IMPLICIT.

Хоча рішення CONVERT простіше і легше читати для деяких, це є більш повільним. Не потрібно повертатися до дати часу (це неявно робиться сервером). Також немає реальної потреби в методі DateDiff для DateAdd після цього, оскільки цілий результат також буде неявно перетворений назад у поточний час.


ВИБІР КОНВЕРТ (varchar, MyDate, 101) ВІД DATETable

  |--Compute Scalar(DEFINE:([Expr1004]=CONVERT(varchar(30),[TEST].[dbo].[DatesTable].[MyDate],101)))
       |--Table Scan(OBJECT:([TEST].[dbo].[DatesTable]))

ВИБІР DATEADD (dd, 0, DATEDIFF (dd, 0, MyDate)) З дат

  |--Compute Scalar(DEFINE:([Expr1004]=dateadd(day,(0),CONVERT_IMPLICIT(datetime,datediff(day,'1900-01-01 00:00:00.000',CONVERT_IMPLICIT(datetime,[TEST].[dbo].[DatesTable].[MyDate],0)),0))))
       |--Table Scan(OBJECT:([TEST].[dbo].[DatesTable]))

Використання FLOOR (), як запропонував @digi, має продуктивність, наближену до DateDiff, але не рекомендується, оскільки передача типу даних datetime на плаваючий і назад не завжди дає початкове значення.

Пам’ятайте хлопці: нікому не вірте. Подивіться статистику результативності та протестуйте самі!

Будьте уважні, коли ви тестуєте свої результати. Вибір клієнтів багатьох рядків приховає різницю в продуктивності, оскільки для відправлення рядків по мережі потрібно більше часу, ніж це для виконання обчислень. Тому переконайтесь, що роботу всіх рядків виконує сервер, але набір рядків не надсилається клієнту.

Деякі люди, мабуть, мають плутанину щодо того, коли оптимізація кешу впливає на запити. Запуск двох запитів в одній партії або в окремих партіях не впливає на кешування. Таким чином, ви можете або закінчити кеш вручну, або просто запустити запити вперед і назад кілька разів. Будь-яка оптимізація для запиту №2 також вплине на будь-які наступні запити, тому викиньте виконання №1, якщо хочете.

Ось повний тестовий скрипт та результати роботи, які доводять, що DateDiff значно швидше, ніж перетворення на varchar.


Рікардо С, приємне розслідування! Яку версію SQL-сервера ви використовуєте? На MSSQL2000 метод з datiiff працює трохи швидше для мене.
аку

Зауважимо, я провів тест 1000 000 разів. Для різниці в продуктивності реальних сценаріїв не буде помітно, я думаю
Ака

Аку, я використовував SQL Server 2005 Express для цього тесту. Я працюю над 2000 на роботі, і я випробую її на таблиці з понад 24 мільйонами рядків і побачу, що з цього виходить.
Рікардо C

Аку, такі ж результати. Немає різниці в продуктивності понад десять мільйонів рядків.
Рікардо C

5
Претензії про рівне виконання не відповідають дійсності. Звичайно, плани виконання будуть однаковими !!! Вимірювання продуктивності на цих ОБОВ'ЯЗКОВО слід проводити, порівнюючи використання процесора, не вивчаючи плани виконання.
ErikE

51

Спробуйте це:

SELECT CONVERT(VARCHAR(10),GETDATE(),111)

Вищенаведене твердження перетворює ваш поточний формат у YYYY/MM/DD, перейдіть за цим посиланням, щоб вибрати бажаний формат.


5
Це повертає '2008/09/22' для мене
eddiegroves

1
ВИБІР КОНВЕРТ (VARCHAR (10), GETDATE (), 101) - це mm/dd/yyyyформат.
блоха

4
якщо ви сортуєте на основі сировинного значення тексту (за межами БД), тоді краще "японський" формат
Simon_Weaver


21

Для повернення у форматі дати

CAST (дата замовлення AS AS)

Вищевказаний код буде працювати на сервері sql 2010

Він повернеться як 12.12.2013

Для SQL Server 2012 використовуйте наведений нижче код

CONVERT(VARCHAR(10), OrderDate , 111)

1
Це повертає мені дату з нульовим часом, а не просто датою
богем

1
Чи можу я знати, яку версію, якщо сервер sql, який ви використовуєте?
Mahesh ML

1
@MaheshML він повертає і дату, і час у MS SQL 2012.
Marek

1
Працює як шарм у SQL Azure
Мартін Колл

5
@MaheshML Не існує такого поняття, як SQL Server 2010.
SvenAelterman


16

Якщо результат потрібен як результат varchar, вам слід пройти

SELECT CONVERT(DATE, GETDATE()) --2014-03-26
SELECT CONVERT(VARCHAR(10), GETDATE(), 111) --2014/03/26

про що вже говорилося вище.

Якщо вам потрібен результат у форматі дати та часу, слід скористатися будь-яким із запитів, наведених нижче

  1. SELECT CONVERT(DATETIME, CONVERT(VARCHAR(10), GETDATE(), 111)) AS OnlyDate 

    2014-03-26 00: 00: 00.000

  2. SELECT CONVERT(DATETIME, CONVERT(VARCHAR(10), GETDATE(), 112)) AS OnlyDate 

    2014-03-26 00: 00: 00.000

  3. DECLARE  @OnlyDate DATETIME
    SET @OnlyDate = DATEDIFF(DD, 0, GETDATE())
    SELECT @OnlyDate AS OnlyDate

    2014-03-26 00: 00: 00.000


14
SELECT CONVERT(VARCHAR,DATEADD(DAY,-1,GETDATE()),103) --21/09/2011

SELECT CONVERT(VARCHAR,DATEADD(DAY,-1,GETDATE()),101) --09/21/2011

SELECT CONVERT(VARCHAR,DATEADD(DAY,-1,GETDATE()),111) --2011/09/21

SELECT CONVERT(VARCHAR,DATEADD(DAY,-1,GETDATE()),107) --Sep 21, 2011

13

Використання FLOOR () - просто скоротити частину часу.

SELECT CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)

4
Цей метод не найшвидший, а також неявно вчить людей, що дати дати плавати точно, чого це не так. Будь ласка, перегляньте цю публікацію для більш детальної інформації.
ЕрікЕ

13

Якщо ви використовуєте версії SQL Server 2012 або новіших версій ,

Використовуйте Format()функцію.

Для SQL-сервера вже існує безліч відповідей та типів форматування. Але більшість методів є дещо неоднозначними, і вам буде важко запам’ятати цифри для типу або функцій формату щодо конкретного формату дати. Ось чому в наступних версіях SQL-сервера є кращий варіант.

FORMAT ( value, format [, culture ] )

Варіант культури дуже корисний, оскільки ви можете вказати дату відповідно до своїх глядачів.

Ви повинні пам'ятати d (для невеликих візерунків) і D (для довгих візерунків).

1. "d" - Шаблон короткої дати.

2009-06-15T13:45:30 -> 6/15/2009 (en-US)
2009-06-15T13:45:30 -> 15/06/2009 (fr-FR)
2009-06-15T13:45:30 -> 2009/06/15 (ja-JP)

2. "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/2011         01/10/2011                    01.10.2011    2011/10/1

US English Result            Great Britain English Result  German Result                    Chinese (Simplified PRC) Result
---------------------------- ----------------------------- -----------------------------  ---------------------------------------
Saturday, October 01, 2011   01 October 2011               Samstag, 1. Oktober 2011        2011101

Якщо вам потрібно більше форматів, ви можете перейти до:

  1. Стандартні рядки дати та часу
  2. Спеціальні рядки формату дати та часу

12

ЯКЩО ви хочете використовувати CONVERT і отримати той самий вихід, як у вихідному запитанні, тобто yyyy-mm-dd, тоді використовується CONVERT(varchar(10),[SourceDate as dateTime],121)той же код, що і відповіді попередньої пари, але код для перетворення у yyyy-mm-dd з тире є 121.

Якщо я можу потрапити на свою мильну скриньку на секунду, подібне форматування не належить до рівня даних , і тому це не було можливим без дурних "хитрощів" до SQL Server 2008, коли фактичні типи даних введено. Здійснення таких перетворень у рівні даних - це велика витрата накладних витрат на ваші СУБД, але, що ще важливіше, друге, якщо ви робите щось подібне, ви в основному створили в пам'яті осиротілі дані, які я припускаю, що потім повернетеся до програми. Ви не можете повернути його в інший стовпець 3NF + або порівнювати його з будь-яким типом, що не було введено без ревертування, тому все, що ви зробили, це вводити точки відмови та видаляти реляційну посилання.

ЗАВЖДИ Ви завжди повинні повернути тип даних dateTime в програму виклику та в рівні ПРЕДСТАВЛЕННЯ, внести всі необхідні коригування. Як тільки ви переходите до перетворення речей, перш ніж повернути їх абоненту, ви видаляєте з програми всі сподівання на референтну цілісність. Це повторно запобігає операції UPDATE або DELETE, якщо ви не зробите якусь ручну реверсію, яка знову піддає вашим даним помилку людини / code / gremlin, коли немає потреби.


1
За винятком, скажімо, якщо ви хочете запит, який отримує всі записи, що відповідають даті, наданій користувачем, як частину дати певного часового поля. Вдало це робити лише в презентаційному шарі. (Вам не потрібно конвертувати, ви можете використовувати арифметику дати, але ви зрозумієте ідею…)
Андрій Лазар

1
@Andrew чому це важливо? Ви кажете WHERE col >= @Date AND col < DATEADD(DAY, 1, @Date);- абсолютно немає причин знімати час з колонки.
Аарон Бертран

1
@AaronBertrand Це працює лише за умови, що вхід @Dateмає нульову часову частину. У випадку, якщо це неправда, ви все ще повинні знати, як усікати час на стороні сервера. Я погоджуюся з цією відповіддю, що форматування слід залишити на шарі презентації, але я не погодився з тим, що залишити це для переднього кінця означає, що вам не потрібно знати швидкий спосіб усікання.
Андрій Лазар

1
@Andrew все, що вам потрібно зробити, це зробити вхідний параметр DATE. Думаю, що ніколи не потрібно застосовувати будь-яке таке укорочення до стовпчика , хоча це перший інстинкт більшості людей.
Аарон Бертран

1
@AaronBertrand, і це передбачає, що ви маєте контроль над типом даних параметра. Штраф за збереженою процедурою, що не так можливо в інших ситуаціях. Чому б не переконатися, що параметр є типом, який ви хочете і вам потрібен?
Андрій Лазар

10
SELECT DATEADD(DD, DATEDIFF(DD, 0, GETDATE()), 0)

SELECT DATEADD(DAY, 0, DATEDIFF(DAY,0, GETDATE()))

SELECT CONVERT(DATETIME, CONVERT(VARCHAR(10), GETDATE(), 101))

Редагувати: Перші два способи по суті є однаковими, і виконують метод перетворення в varchar.


1
Ці методи чудові, але який із них ви пропонуєте використовувати?
eddiegroves

3
Зверніть увагу , що «правильний» варіант в верхніх два це select dateadd(dd, datediff(dd, 0, getdate()), 0), тому що dds може бути вивантажений для будь-якого з тих datepartключових слів , щоб відсікти дату в будь-якому сегменті ви вибираєте. (Також зауважте, що ddце лише абревіатура для day.)
Майкл - Де Clay Shirky

10

Для отримання зазначеного результату я використовую таку команду.

SELECT CONVERT(DATETIME,CONVERT(DATE,GETDATE()))

Я вважаю це корисним.



7

Якщо ви присвоюєте результати стовпцю або змінній, надайте йому тип DATE, а перетворення неявне.

DECLARE @Date DATE = GETDATE()   

SELECT @Date   --> 2017-05-03

6

Я думаю, що це спрацює у вашому випадку:

CONVERT(VARCHAR(10),Person.DateOfBirth,111) AS BirthDate
//here date is obtained as 1990/09/25

6
DECLARE @yourdate DATETIME = '11/1/2014 12:25pm'    
SELECT CONVERT(DATE, @yourdate)

2
Ця пропозиція висвітлювалася в інших відповідях (не раз).
Андрій М

6

Гаразд, хоча я трохи запізнююся :), ось інше рішення.

SELECT CAST(FLOOR(CAST(GETDATE() AS FLOAT)) as DATETIME)

Результат

2008-09-22 00:00:00.000

І якщо ви використовуєте SQL Server 2012 та новіші версії, ви можете використовувати FORMAT()таку функцію -

SELECT FORMAT(GETDATE(), 'yyyy-MM-dd')

У вашому першому прикладі все ще є часова складова. Суть питання полягала в тому, як це усунути.
Зак

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 27 2015  1:14PM
2) Date/time in format MM-DD-YY: 02-27-15
3) Date/time in format MM-DD-YYYY: 02-27-2015
4) Date/time in format DD MON YYYY: 27 Feb 2015
5) Date/time in format DD MON YY: 27 Feb 15
6) Date/time in format DD MON YYYY HH:MM:SS:MMM(24H): 27 Feb 2015 13:14:46:630

5

Дата:

ВИБІР КОНВЕРТ (дата, GETDATE ())
ВИБІРТЕ КАСТ (GETDATE () як дата)

Час:

ВИБІР КОНВЕРТ (час, GETDATE (), 114)
ВИБІРТЕ КАСТ (GETDATE () як час)

5

Просто ви можете зробити так:

SELECT CONVERT(date, getdate())
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, @your_date))
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))

Виходи:

2008-09-22 00:00:00.000

Або просто так:

SELECT CONVERT (DATE, GETDATE()) 'Date Part Only'

Результат:

Date Part Only
--------------
2013-07-14

4

чому ви не використовуєте 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'частину


4

Я знаю, що це по-старому, але я не бачу, де хто так це заявив. З того, що я можу сказати, це стандарт ANSI.

SELECT CAST(CURRENT_TIMESTAMP AS DATE)

Було б добре, якби Microsoft також міг підтримати стандартну змінну CURRENT_DATE ANSI.


select {fn current_date()} as todayпрацює для мене.
бріанарія

@brianary - Це добре, але це не ANSI SQL.
запалили

Це досить справедливо, і ваша відповідь чудово переноситься, але я зрозумів, що поки ми працюємо над T-SQL, це також працює (і показує, що впровадження ANSI CURRENT_DATE було б тривіальним для MS).
бріанарій

4

Я віддаю перевагу такому, про яке не згадувалося:

DATEFROMPARTS(DATEPART(yyyy, @mydatetime), DATEPART(mm, @mydatetime), DATEPART(dd, @mydatetime))

Це також не хвилює локальне або подвійне перетворення - хоча кожен "datepart", ймовірно, має математику. Тож це може бути трохи повільніше, ніж метод датифікування, але мені це набагато зрозуміліше. Особливо, коли я хочу групуватися лише за роком та місяцем (встановити день у 1).


4

Починаючи з SQL SERVER 2012, ви можете це зробити:

SELECT FORMAT(GETDATE(), 'yyyy-MM-dd 00:00:00.000')


4

На SQL Server 2000

CAST(
(
    STR( YEAR( GETDATE() ) ) + '/' +
    STR( MONTH( GETDATE() ) ) + '/' +
    STR( DAY( GETDATE() ) )
)
AS DATETIME)


3

Ви можете використовувати наступне для частини дати та форматування дати:

DATENAME => Повертає символьний рядок, який представляє вказану частину дати зазначеної дати

DATEADD => DATEPART()Функція використовується для повернення однієї частини дати / часу, наприклад року, місяця, дня, години, хвилини тощо.

DATEPART => Повертає ціле число, яке представляє вказану частину дати зазначеної дати.

CONVERT()=> CONVERT()Функція - це загальна функція, яка перетворює вираз одного типу даних в інший. CONVERT()Функція може бути використана для відображення даних дати / часу в різних форматах.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.