Коли я вибираю дату в SQL, вона повертається як 2011-02-25 21:17:33.933
. Але мені потрібна лише дата, тобто 2011-02-25
. Як я можу це зробити?
Коли я вибираю дату в SQL, вона повертається як 2011-02-25 21:17:33.933
. Але мені потрібна лише дата, тобто 2011-02-25
. Як я можу це зробити?
Відповіді:
Я думаю, він хоче струну.
select convert(varchar(10), '2011-02-25 21:17:33.933', 120)
120 тут говорить функцію перетворення , що ми перейдемо дату введення в наступному форматі : yyyy-mm-dd hh:mi:ss
.
Для SQL Server 2008:
Convert(date, getdate())
Зверніться до https://docs.microsoft.com/en-us/sql/t-sql/functions/getdate-transact-sql
DATE
новий у 2008 р.
date
типу даних, тому це рішення робить недійсним.
Найшвидший - datediff
напр
select dateadd(d, datediff(d,0, [datecolumn]), 0), other..
from tbl
Але якщо вам потрібно використовувати лише значення, ви можете пропустити додане дату, наприклад
select ...
WHERE somedate <= datediff(d, 0, getdate())
де виразу datediff(d, 0, getdate())
достатньо, щоб повернути сьогоднішню дату без часової частини.
Використовувати CAST (GETDATE () як дату), який працював для мене, просто.
CAST(order_date AS DATE)
CAST(
FLOOR(
CAST( GETDATE() AS FLOAT )
)
AS DATETIME
)
http://www.bennadel.com/blog/122-Getting-Only-the-Date-Part-of-a-Date-Time-Stamp-in-SQL-Server.htm
Для старшої версії 2008 року :
SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
Це трохи пізно, але використовуйте функцію ODBC "curdate" (кутові дужки "fn" - це послідовність відхилення функції ODBC).
SELECT {fn curdate()}
Вихід: 2013-02-01
SELECT {fn curdate()} FROM (SELECT 1) AS T(X)
і ознайомитись із фактичним планом виконання (версія xml), ви побачите, що насправді виконується CONVERT(varchar(10),getdate(),23)
. Таким чином, тип даних цієї функції ODBC є , varchar(10)
що означає , що якщо ви хочете , щоб порівняти результат з datetime
ви отримаєте неявне перетворення з varchar(10)
до datetime
на нитці yyyy-mm-dd
. Це неявне перетворення не вдасться set dateformat dmy
.
Ви можете спробувати і цей.
SELECT CONVERT(DATE, GETDATE(), 120)
У випадку, якщо вам потрібен час, щоб бути нулями, наприклад 2018-01-17 00:00:00.000
:
SELECT CONVERT(DATETIME, CONVERT(DATE, GETDATE()), 121)
Використання просте:
convert(date, Btch_Time)
Приклад нижче:
Таблиця:
Efft_d Loan_I Loan_Purp_Type_C Orig_LTV Curr_LTV Schd_LTV Un_drwn_Bal_a Btch_Time Strm_I Btch_Ins_I
2014-05-31 200312500 HL03 NULL 1.0000 1.0000 1.0000 2014-06-17 11:10:57.330 1005 24851e0a-53983699-14b4-69109
Select * from helios.dbo.CBA_SRD_Loan where Loan_I in ('200312500') and convert(date, Btch_Time) = '2014-06-17'
Це занадто пізно, але наступні працювали для мене добре
declare @vCurrentDate date=getutcdate()
select @vCurrentDate
Коли тип даних - дата, години будуть усічені
У PLSQL ви можете використовувати
to_char(SYSDATE,'dd/mm/yyyy')
Спочатку перетворіть дату в плаваючу (яка відображає числову), потім ROUND
числову в 0 десяткових знаків, а потім перетворіть її в дату.
convert(datetime,round(convert(float,orderdate,101),0) ,101)
Спробуйте це.
SELECT DATEADD(DD, 0, DATEDIFF(DD, 0, GETDATE()))