当我在SQL中选择日期时,它将返回为 2011-02-25 21:17:33.933
。但是我只需要Date部分,即2011-02-25
。我怎样才能做到这一点?
当我在SQL中选择日期时,它将返回为 2011-02-25 21:17:33.933
。但是我只需要Date部分,即2011-02-25
。我怎样才能做到这一点?
Answers:
对于SQL Server 2008:
Convert(date, getdate())
请参考https://docs.microsoft.com/zh-cn/sql/t-sql/functions/getdate-transact-sql
DATE
是2008
date
数据类型,因此使此解决方案无效。
CAST(
FLOOR(
CAST( GETDATE() AS FLOAT )
)
AS DATETIME
)
http://www.bennadel.com/blog/122-Getting-Only-the-Date-Part-of-Date-Time-Stamp-in-SQL-Server.htm
有点晚了,但是使用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)
意味着,如果要与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')
试试这个。
SELECT DATEADD(DD, 0, DATEDIFF(DD, 0, GETDATE()))