Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQL中选择没有时间的日期_Sql_Sql Server_Sql Server 2005 - Fatal编程技术网

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

如何在SQL中选择没有时间的日期,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,当我在SQL中选择日期时,它返回为2011-02-25 21:17:33.933。但我只需要日期部分,即2011-02-25。我该怎么做 CAST( FLOOR( CAST( GETDATE() AS FLOAT ) ) AS DATETIME ) 最快的是,例如 但如果您只需要使用该值,则可以跳过dateadd,例如 select ... WHERE somedate <= datediff(d, 0, getdate()

当我在SQL中选择日期时,它返回为
2011-02-25 21:17:33.933
。但我只需要日期部分,即
2011-02-25
。我该怎么做

CAST(
        FLOOR( 
             CAST( GETDATE() AS FLOAT ) 
        )

AS DATETIME
)
最快的是,例如

但如果您只需要使用该值,则可以跳过dateadd,例如

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

我猜他想要一根绳子

select convert(varchar(10), '2011-02-25 21:17:33.933', 120)
这里的120告诉convert函数,对于SQL Server 2008,我们在:
yyyy-mm-dd hh:mi:ss

中传递输入日期:

Convert(date, getdate())  
请参阅您可以这样使用的

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

虽然有点晚,但是使用ODBC“curdate”函数(角括号'fn'是ODBC函数的转义序列)

输出:
2013-02-01

在PLSQL中,您可以使用

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

使用对我有用的CAST(GETDATE()作为日期),简单。

对于2008旧版本

选择DATEADD(DAY,DATEDIFF(DAY,0,GETDATE()),0)
使用非常简单:

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个小数点,然后将其转换为日期时间

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

如果要将日期类型仅作为日期返回,请使用

CONVERT(date, SYSDATETIME())

试试这个

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

你也可以试试这个

SELECT CONVERT(DATE, GETDATE(), 120)

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

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

如果您需要将时间设置为零,如
2018-01-17 00:00:00.000


选择CONVERT(DATETIME,CONVERT(DATE,GETDATE()),121)

太晚了,但下面的方法对我很有效

declare @vCurrentDate date=getutcdate()

select @vCurrentDate
当数据类型为日期时,小时将被截断

从表中选择日期(字段)

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

选择值:2020-12-15

我将使用该函数。这是很容易的,你不需要铸造。例如,此查询:

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



我猜他想要一个字符串,因此它不是@TylerH的可能副本。有没有办法得到2011-02-25 00:00:00.000而不是当前时间?我得到了“类型日期不是定义的系统类型”。我不知道为什么这是一个如此上浮的答案。此问题针对的是SQL Server 2005,而不是2008。2005没有
date
数据类型,因此此解决方案无效。它被提升,因为人们来寻找解决问题的方法,而不是作者。因此,如果有110人发现这对他们有效,我认为这是公平的,它有110张投票;sql server 2017版,错误(类型date不是已定义的系统类型)列类型DateTime这将仅提供当前日期。数据库中存储的其他日期呢?我真的很好奇你认为你的答案比公认的答案好多少。或者你在哪里提到了其他答案?@Mikael-Eriksson:Hmm,因为ODBC函数是规范函数,因此是可索引的,不同于不确定的sqlserver函数。但没关系,这只是一个扩展问题,当您从测试中的3个条目移动到生产中的1*10E6条目时,您在开发过程中不会遇到任何问题;)如果运行此查询
将{fn curdate()}FROM(选择1)作为T(X)
并查看实际执行计划(xml版本),您将看到实际执行的是
转换(varchar(10),getdate(),23)
。因此,这个ODBC函数的数据类型是
varchar(10)
,这意味着如果要将结果与
datetime
进行比较,您将在字符串
yyyy-mm-dd
上获得从
varchar(10)
datetime
的隐式转换。隐式转换将失败,原因是
set dateformat dmy
@Mikael Eriksson:看起来像个bug,他们应该使用SELECT CONVERT(char(8),GETDATE(),112)。“规范函数,因此是可索引的,不像不确定的SQL Server函数”--er,什么?考虑把这个转移到评论。这个问题是关于SQL Server…这不是本页上最优雅的答案。当您用DATETIME2类型的值替换GETDATE()时,这不起作用。Oldie但是goodie,在旧的2000/2005 DBs中使用了几十次这个技巧。对此表示祝贺!其他解决方案只依赖于varchar(10)部分,它只是截断了值。谢谢,这就是我要找的。120是什么?@Пааааааааааа参考本文我使用了这个选择转换(varchar(10),APPROVEDаDATE,120),我得到了错误列APPROVEDаDa?错误无法绑定多部分标识符“实验室结果.批准日期”。我将在哪里添加我的列名?选择cast(getdate()作为日期,order_date)?@Abdullah
cast(order_date作为日期)
我将在哪里放置我的列名order date?
round
需要第三个参数“1”来截断,而不是舍入,否则当时间超过中午时,它将被舍入到第二天。
select Convert(datetime, Convert(date, getdate())  )
declare @vCurrentDate date=getutcdate()

select @vCurrentDate
Select  DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), DAY(GETDATE())) as myNewDate
Select  DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1) as myNewDate