我正在尝试比较SQL查询中datetime字段中的时间,但不知道是否正确。我不想比较日期部分,只是时间部分。
我正在这样做:
SELECT timeEvent
FROM tbEvents
WHERE convert(datetime, startHour, 8) >= convert(datetime, @startHour, 8)
这是正确的吗?
我问这个问题是因为我需要知道08:00:00是小于还是大于,07:30:00并且我不想比较日期,只是时间部分。
谢谢!
您的比较可以工作,但是会很慢,因为日期会转换为每一行的字符串。为了有效地比较两个时间部分,请尝试:
declare @first datetime
set @first = '2009-04-30 19:47:16.123'
declare @second datetime
set @second = '2009-04-10 19:47:16.123'
select (cast(@first as float) - floor(cast(@first as float))) -
(cast(@second as float) - floor(cast(@second as float)))
as Difference
详细说明:SQL Server中的日期存储为浮点数。小数点前的数字代表日期。小数点后的数字代表时间。
所以这是一个示例日期:
declare @mydate datetime
set @mydate = '2009-04-30 19:47:16.123'
让我们将其转换为浮点数:
declare @myfloat float
set @myfloat = cast(@mydate as float)
select @myfloat
-- Shows 39931,8244921682
现在参加数字之后的部分,即时间:
set @myfloat = @myfloat - floor(@myfloat)
select @myfloat
-- Shows 0,824492168212601
将其转换回日期时间:
declare @mytime datetime
set @mytime = convert(datetime,@myfloat)
select @mytime
-- Shows 1900-01-01 19:47:16.123
1900-01-01只是“零”日期。您可以使用convert来显示时间部分,例如指定格式108,这就是时间:
select convert(varchar(32),@mytime,108)
-- Shows 19:47:16
datetime和float之间的转换非常快,因为它们基本上以相同的方式存储。
问题内容: 我看到可以进行日期比较,也可以进行日期比较,但是我一直在努力寻找如何检查当前时间()是否早于指定时间(例如上午8点),还是晚于指定时间(例如上午8点),而不管日期如何。 问题答案: 您 无法 将特定时间点(例如“现在”)与一个固定的重复发生的事件(每天早上8点发生)进行比较。 您可以检查是否现在之前或之后, 今天 上午8点:
问题内容: 例如,假设我有 我如何确定现在是否在这个时间之前?我努力了 但是日期为1970年,因此比较失败 问题答案: 您总是可以做相反的事情:
我有一个从数据库中检索的时间戳值,然后将其与当前时间戳进行比较。我实际上想检索过去两个小时内登录的用户的数据。不幸的是,我面临着这个错误。请帮帮我,伙计们。我会感谢你的。我被困在这个密码里了。我的问题如下。 这就是我的错误。 org.hibernate.hql.ast.查询语法异常:意外令牌: 04行附近1,列128[SELECT ls fromcom.ideacrossing.skild.hbm
问题内容: 这个问题已经在这里有了答案 : SQL中的TRUNCATE和DELETE有什么区别 (32个答案) TRUNCATE vs DELETE FROM的利弊 (11个答案) 6年前关闭。 关于mysql / sqlserver,我的脑海里发生了一件事,即 删除/截断 哪个更好更快? 在哪里使用删除? 在哪里使用截断? 问题答案: 删除 DELETE是DML命令。 使用行锁执行DELETE语
我有一个关于compareTo函数如何帮助比较器排序的问题,即o1。比较(o2)与o2。比较(o1) 如果两个字符串相等,则此方法返回0,否则返回正值或负值。如果第一个字符串在词典上大于第二个字符串,则结果为正,否则结果为负。 上面的陈述很简单,但是为什么o1.compare(o2)会给我一个升序,而o2.compare(o1)给了我一个降序? 如果我有整数值“5,10,3”,我得到3,5,10和
问题内容: 我有一个带有timestamp列的表,我想获取特定月份的时间戳记(例如,9月1日至9月30日之间的timpestamp),如果该月份为31天,则需要考虑这些值。我使用以下查询: 我可以加吗?? date_array将是整个月的日期? 问题答案: 要使其与索引一起使用,您可以执行