Когда я выбираю дату в 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()))