del*_*les 73 sql-server datetime
简单的问题,但我还是无法解决它...
我有一个带有DATETIME字段的表TEST,如下所示:
ID NAME DATE
1 TESTING 2014-03-19 20:05:20.000
Run Code Online (Sandbox Code Playgroud)
我需要的是下面的查询返回此行和每行的日期= 03/19/2014,无论什么时候是:
select * from test where date = '03/19/2014';
Run Code Online (Sandbox Code Playgroud)
但它不返回任何行.唯一的工作方式是指定时间:
select * from test where date = '03/19/2014 20:03:02.000';
Run Code Online (Sandbox Code Playgroud)
提前致谢 !
Cha*_*ana 106
使用范围或DateDiff函数
select * from test
where date between '03/19/2014' and '03/19/2014 23:59:59'
Run Code Online (Sandbox Code Playgroud)
要么
select * from test
where datediff(day, date, '03/19/2014') = 0
Run Code Online (Sandbox Code Playgroud)
其他选择是:
如果您可以控制数据库架构,并且不需要时间数据,请将其取出.
或者,如果你必须保留它,添加一个计算列属性,其中剥离了日期值的时间部分...
Alter table Test
Add DateOnly As
DateAdd(day, datediff(day, 0, date), 0)
或者,在更新版本的SQL Server中......
Alter table Test
Add DateOnly As
Cast(DateAdd(day, datediff(day, 0, date), 0) as Date)
然后,您可以简单地编写查询:
select * from test
where DateOnly = '03/19/2014'
Run Code Online (Sandbox Code Playgroud)
小智 46
答案简单;
select * from test where cast ([date] as date) = '03/19/2014';
Run Code Online (Sandbox Code Playgroud)
Gok*_*u__ 17
我正在使用MySQL 5.6,并且有一个DATE函数只从日期时间中提取日期部分.所以这个问题的简单解决方案是 -
select * from test where DATE(date) = '2014-03-19';
Run Code Online (Sandbox Code Playgroud)
http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html
小智 9
这适用于我的 MS SQL 服务器:
select * from test
where
year(date) = 2015
and month(date) = 10
and day(date)= 28 ;
Run Code Online (Sandbox Code Playgroud)
小智 8
select * from test
where date between '03/19/2014' and '03/19/2014 23:59:59'
Run Code Online (Sandbox Code Playgroud)
这是一个非常糟糕的答案。有两个原因。
1. 像 23.59.59.700 等时间会发生什么。有些时间大于 23:59:59 和第二天。
2. 行为取决于数据类型。对于 datetime/date/datetime2 类型,查询的行为有所不同。
使用 23:59:59.999 进行测试会使情况变得更糟,因为根据日期类型,您会得到不同的舍入。
select convert (varchar(40),convert(date , '2014-03-19 23:59:59.999'))
select convert (varchar(40),convert(datetime , '2014-03-19 23:59:59.999'))
select convert (varchar(40),convert(datetime2 , '2014-03-19 23:59:59.999'))
Run Code Online (Sandbox Code Playgroud)
-- 对于日期,该值为“切碎”。-- 对于日期时间,该值向上舍入到下一个日期。(最近值)。-- 对于 datetime2,该值是精确的。
| 归档时间: |
|
| 查看次数: |
465032 次 |
| 最近记录: |