Когда я выбираю дату в 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' - escape-последовательность функции 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)означает, что если вы хотите сравнить результат с a, 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()))