热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

请问大侠怎么用SQL筛选几个固定的时间的记录?谢谢

我用的是sqlserver表tab1------------------------------------------date_time
我用的是sql server

 表 tab1
------------------------------------------
   date_time                  action
   2009-6-20 09:00:00         坐车出去
   2009-6-20 10:30:00         唱歌
   2009-6-20 12:00:00         吃饭
   2009-6-20 12:30           看报纸
   2009-6-20 14:00           回家
   2009-6-21 09:00:00         上班
   2009-6-21 10:00:00         写报告
   2009-6-21 10:30:00         开会

我想筛选每天 09:00:00  和 10:30:00的记录,不比较日期,只比较时间部分。
想要结果集合是:

   date_time                  action
   2009-6-20 09:00:00         坐车出去
   2009-6-20 10:30:00         唱歌
   2009-6-21 09:00:00         上班
   2009-6-21 10:30:00         开会



   
谢谢各位大侠

22 个解决方案

#1


select * from tab1 where convert(varchar(10),date_time,108) between '09:00:00' and '10:30:00'

#2



select * from tab1 where convert(nvarchar(10),date_time,108) between '09:00:00' and '10:30:00'

#3



--理解错了:
select * from tab1 where convert(varchar(10),date_time,108)='09:00:00' or convert(varchar(10),date_time,108)='10:30:00'

#4



select * from tab1 where convert(varchar(10),date_time,108) in ('09:00:00','10:30:00')

这样还行啊?

#5


select * from tab1 
where substring(date_time,12,8) between '09:00:00' and '10:30:00'

#6


select * from tab1 
where substring(date_time,12,8) = '09:00:00' or substring(date_time,12,8)='10:30:00'

#7


select convert(varchar(10),getdate(),108) 
--10:06:46 当前时间,这个是转换datetime为时间字符串的函数

#8


只要整点的记录,09:00:00  和 10:30:00的记录,
而不是 要09:00:00 到 10:30:00之间的记录。

#9


select * from tab1 
where substring(date_time,12,8) between '09:00:00' and '10:30:00'

#10



---------------------------------
--  Author: htl258(Tony)
--  Date  : 2009-07-29 09:35:13
---------------------------------
--> 生成测试数据表:tab1

If not object_id('[tab1]') is null
Drop table [tab1]
Go
Create table [tab1]([date_time] datetime,[action] nvarchar(4))
Insert tab1
Select '2009-6-20 09:00:00','坐车出去' union all
Select '2009-6-20 10:30:00','唱歌' union all
Select '2009-6-20 12:00:00','吃饭' union all
Select '2009-6-20 12:30:00','看报纸' union all
Select '2009-6-20 14:00:00','回家' union all
Select '2009-6-21 09:00:00','上班' union all
Select '2009-6-21 10:00:00','写报告' union all
Select '2009-6-21 10:30:00','开会'
Go
--Select * from tab1

-->SQL查询如下:
select * 
from tab1 
where cast(convert(varchar,[date_time],8) as datetime) between '09:00' and '10:30'
/*
date_time               action
----------------------- ------
2009-06-20 09:00:00.000 坐车出去
2009-06-20 10:30:00.000 唱歌
2009-06-21 09:00:00.000 上班
2009-06-21 10:00:00.000 写报告
2009-06-21 10:30:00.000 开会

(5 行受影响)
*/

#11


引用 8 楼 cnlmgsoft 的回复:
只要整点的记录,09:00:00  和 10:30:00的记录,
而不是 要09:00:00 到 10:30:00之间的记录。

select * from tab1 
where substring(date_time,12,8) = '09:00:00' or substring(date_time,12,8)='10:30:00'

select * from tab1
 where convert(varchar(10),date_time,108)='09:00:00' or convert(varchar(10),date_time,108)='10:30:00'


#12


select * from tab1 where convert(varchar(10),date_time,108)='09:00:00' or convert(varchar(10),date_time,108)='10:30:00'



#13


date_time 是个“日期时间” 字段

#14


select * from tab1 
where substring(date_time,12,8) ='09:00:00' or substring(date_time,12,8) ='10:30:00'

#15


dingding

#16



---------------------------------
--  Author: htl258(Tony)
--  Date  : 2009-07-29 09:35:13
---------------------------------
--> 生成测试数据表:tab1

If not object_id('[tab1]') is null
Drop table [tab1]
Go
Create table [tab1]([date_time] datetime,[action] nvarchar(4))
Insert tab1
Select '2009-6-20 09:00:00','坐车出去' union all
Select '2009-6-20 10:30:00','唱歌' union all
Select '2009-6-20 12:00:00','吃饭' union all
Select '2009-6-20 12:30:00','看报纸' union all
Select '2009-6-20 14:00:00','回家' union all
Select '2009-6-21 09:00:00','上班' union all
Select '2009-6-21 10:00:00','写报告' union all
Select '2009-6-21 10:30:00','开会'
Go
--Select * from tab1

-->SQL查询如下:
select * 
from tab1 
where cast(convert(varchar,[date_time],8) as datetime) in('09:00','10:30')
/*
date_time               action
----------------------- ------
2009-06-20 09:00:00.000 坐车出去
2009-06-20 10:30:00.000 唱歌
2009-06-21 09:00:00.000 上班
2009-06-21 10:30:00.000 开会

(4 行受影响)
*/
如果只取9:00与10:30两个时间,这样.

#17


If not object_id('[tab1]') is null
    Drop table [tab1]
Go
Create table [tab1]([date_time] datetime,[action] nvarchar(4))
Insert tab1
Select '2009-6-20 09:00:00','坐车出去' union all
Select '2009-6-20 10:30:00','唱歌' union all
Select '2009-6-20 12:00:00','吃饭' union all
Select '2009-6-20 12:30:00','看报纸' union all
Select '2009-6-20 14:00:00','回家' union all
Select '2009-6-21 09:00:00','上班' union all
Select '2009-6-21 10:00:00','写报告' union all
Select '2009-6-21 10:30:00','开会'
Go
select * from tab1
 where convert(varchar(10),date_time,108)='09:00:00' or convert(varchar(10),date_time,108)='10:30:00'
date_time               action
----------------------- ------
2009-06-20 09:00:00.000 坐车出去
2009-06-20 10:30:00.000 唱歌
2009-06-21 09:00:00.000 上班
2009-06-21 10:30:00.000 开会

数据一用

#18


多谢,解决了,用这个可以
CONVERT(varchar(10), HL_DT_Design, 108)

#19



select * from tab1 where date_time like'%09:00:00%' or date_time  like'%10:30:00'

#20



declare @tabl table (date_time datetime,action nvarchar(20))
insert into @tabl select '2009-6-20 09:00:00','坐车出去'
      union all  select '2009-6-20 10:30:00','唱歌'
      union all  select '2009-6-20 12:00:00','吃饭'
      union all  select '2009-6-20 12:30:00','看报纸'
      union all  select '2009-6-20 14:00:00','回家'
      union all  select '2009-6-21 09:00:00','上班'
      union all  select '2009-6-21 10:00:00','写报告'
      union all  select '2009-6-21 10:30:00','开会'
select * from @tabl where CONVERT(nvarchar(10),date_time ,108) between '09:00:00' and '10:30:00'

date_time               action
----------------------- --------------------
2009-06-20 09:00:00.000 坐车出去
2009-06-20 10:30:00.000 唱歌
2009-06-21 09:00:00.000 上班
2009-06-21 10:00:00.000 写报告
2009-06-21 10:30:00.000 开会

(5 行受影响)

#21


 

declare @tab1 table (date_time varchar(32),action nvarchar(8))
insert into @tab1 select
  '2009-6-20 09:00:00',        '坐车出去' union all select
  '2009-6-20 10:30:00',        '唱歌 ' union all select
  '2009-6-20 12:00:00',        '吃饭' union all select 
  '2009-6-20 12:30',          '看报纸' union all select 
  '2009-6-20 14:00',          '回家' union all select 
  '2009-6-21 09:00:00',        '上班' union all select 
  '2009-6-21 10:00:00',        '写报告' union all select 
  '2009-6-21 10:30:00',        '开会'
--------方法1-----------------------------------------------------------
select date_time,action from @tab1 where substring(date_time,charindex(' ',date_time)+1,8) in ('09:00:00','10:30:00')
--------方法2-----------------------------------------------------------
select date_time,action from @tab1 where (date_time like '%09:00:00') or (date_time like '%10:30:00')

#22


select
							     

推荐阅读
author-avatar
初始化
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有