当前位置:  开发笔记 > 前端 > 正文

获取datetime列=今天的行 - SQL server noob

如何解决《获取datetime列=今天的行-SQLservernoob》经验,为你挑选了2个好方法。

在sql 2005中,而不是从dateparts年,月和日建立一个查询,

有没有更简洁的方式编写where子句?



1> marc_s..:

在SQL Server 2008上,您将拥有一个新的DATE数据类型,您可以使用它来实现此目的:

SELECT (list of fields)
FROM dbo.YourTable
WHERE dateValue BETWEEN 
   CAST(GETDATE() AS DATE) AND DATEADD(DAY, 1, CAST(GETDATE() AS DATE))

CAST(GETDATE() AS DATE)当前日期和时间转换为仅日期值,例如,返回2010年4月6日的"2010-04-06".为此添加一天基本上选择今天的所有日期时间值.

在SQL Server 2005中,没有简单的方法可以做到这一点 - 我在这里找到的最优雅的解决方案是使用DATETIME的数字操作来实现相同的结果:

SELECT (list of fields)
FROM dbo.YourTable
WHERE dateValue BETWEEN 
   CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME) AND 
   DATEADD(DAY, 1, CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME))



2> PostMan..:

在SQL 2000和SQL 2005中,您可以使用一个很好的select语句从DateTime中删除时间组件,即

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

将于2010年4月6日返回(仅适用于今天).

所以结合marc_s的答案,你想要的

SELECT (list of fields)
FROM dbo.YourTable
WHERE dateValue BETWEEN DATEADD(dd, DATEDIFF(dd,0,'MY Date and Time, But I Only Want Date'), 0) 
AND DATEADD(dd, DATEDIFF(dd,0,'MY Date and Time, But I Only Want Date'), 1)

编辑:更改为满足要求,请注意第二个DateAdd中的1(这将从开头的日期添加到1(而不是0),使其成为2010年4月7日00:00:00)如果您想要4月23日:59:59你距第二次约会还有一秒钟

DATEADD(ss,-1,'My DateTime')

最后的召唤将成为

DATEADD(ss,-1,DATEADD(dd, DATEDIFF(dd,0,'MY Date and Time, But I Only Want Date'), 1))

好的,这很多信息一下子!希望这一切都有道理:)

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有