如何在SQL中选择没有时间的日期

问题描述 投票:0回答:22

当我在 SQL 中选择日期时,它返回为

2011-02-25 21:17:33.933
。但我只需要日期部分,即
2011-02-25
。我该怎么做?

sql sql-server sql-server-2005
22个回答
657
投票

对于 SQL Server 2008:

Convert(date, getdate())  

请参阅https://learn.microsoft.com/en-us/sql/t-sql/functions/getdate-transact-sql


181
投票

我猜他想要一根绳子。

select convert(varchar(10), '2011-02-25 21:17:33.933', 120)
这里的

120告诉转换函数我们以以下格式传递输入日期:

yyyy-mm-dd hh:mi:ss


85
投票

使用

CAST(GETDATE() As Date)
对我有用


70
投票

最快的是

datediff
,例如

select dateadd(d, datediff(d,0, [datecolumn]), 0), other..
from tbl

但是如果你只需要使用值,那么你可以跳过dateadd,例如

select ...
WHERE somedate <= datediff(d, 0, getdate())

其中表达式

datediff(d, 0, getdate())
足以返回今天的日期,不带时间部分。


30
投票

16
投票

对于 2008 旧版本 :

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


14
投票

你可以这样使用

SELECT Convert(varchar(10), GETDATE(),120) 

11
投票

如果您需要时间为零,例如

2018-01-17 00:00:00.000

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


8
投票

我会使用 DATEFROMPARTS 函数。这非常简单,您不需要铸造。作为一个例子,这个查询:

Select  DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), DAY(GETDATE())) as myNewDate

会回来

2021-01-21

好的部分是,您还可以创建自己的日期,例如您想要一个月的第一天作为日期,而不是像下面这样使用:

Select  DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1) as myNewDate

结果将是:

2021-01-01


4
投票

为时已晚,但以下对我很有用

declare @vCurrentDate date=getutcdate()

select @vCurrentDate

当数据类型为日期时,小时会被截断


3
投票

你也可以试试这个。

SELECT CONVERT(DATE, GETDATE(), 120)

2
投票

有点晚了,但是使用 ODBC“curdate”函数(尖括号“fn”是 ODBC 函数转义序列)。

SELECT {fn curdate()} 

输出:

2013-02-01


2
投票

转换为日期后将其转换回日期时间,以便在需要时保持相同的数据时间

select Convert(datetime, Convert(date, getdate())  )

2
投票

从表中选择日期(字段);

字段值:2020-12-15 12:19:00

选择值:2020-12-15


1
投票

如果您想返回日期类型作为日期使用

CONVERT(date, SYSDATETIME())

SELECT CONVERT(date,SYSDATETIME()) 

DECLARE @DateOnly Datetime
SET @DateOnly=CONVERT(date,SYSDATETIME())

1
投票

使用简单:

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'

0
投票

在 PLSQL 中你可以使用

to_char(SYSDATE,'dd/mm/yyyy')

0
投票

首先将日期转换为浮点型(显示数字),然后

ROUND
将数字转换为 0 位小数,然后将其转换为日期时间。

convert(datetime,round(convert(float,orderdate,101),0) ,101)

0
投票

试试这个。

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

0
投票

我将创建一个标量函数并使用 format() 来设置您想要查看的数据类型。以后维护一定很方便。


0
投票

个人最爱:

select convert(datetime, convert(int, getdate()))

0
投票

使用简单的模式:

TO_DATE(GetDate(),'日/月/年')

© www.soinside.com 2019 - 2024. All rights reserved.