【问题标题】:SQL search full time or partial timeSQL 搜索全职或部分时间
【发布时间】:2021-11-08 15:11:38
【问题描述】:

我正在尝试创建一个可以在全部或部分时间进行过滤的存储过程。它应该只过滤小时或分钟(而不是秒)或小时和分钟。

使用下面的示例数据:

  1. @StartTimeFilter = '09:15' --> 应该返回记录#1

  2. @StartTimeFilter = '10' --> 应该返回记录 2、3、10

  3. @StartTimeFilter = '5' --> 应该返回记录 1、2、5、6、7、8、9

  4. @StartTimeFilter = '45' --> 应该返回记录 5、6

  5. @StartTimeFilter = '13:45' --> 应该返回记录#6

  6. @StartTimeFilter = '11:' --> 应该返回记录 4、5

代码:

CREATE TABLE test 
(
    id INT,
    startTime DateTime
);

INSERT INTO test (id, startTime) VALUES (1, '2021-10-25 09:15:00');
INSERT INTO test (id, startTime) VALUES (2, '2021-10-25 10:15:00');
INSERT INTO test (id, startTime) VALUES (3, '2021-10-25 10:30:00');
INSERT INTO test (id, startTime) VALUES (4, '2021-10-25 11:30:00');
INSERT INTO test (id, startTime) VALUES (5, '2021-10-25 11:45:00');
INSERT INTO test (id, startTime) VALUES (6, '2021-10-25 13:45:00');
INSERT INTO test (id, startTime) VALUES (7, '2021-10-25 14:50:00');
INSERT INTO test (id, startTime) VALUES (8, '2021-10-25 15:51:00');
INSERT INTO test (id, startTime) VALUES (9, '2021-10-25 15:58:00');
INSERT INTO test (id, startTime) VALUES (10,'2021-10-25 16:10:00');

【问题讨论】:

  • Edit 问题并展示您已经尝试过的内容。解释失败的原因/位置。具体(错误消息、意外结果等)。

标签: sql sql-server


【解决方案1】:

看来您需要一个简单的like 字符串比较:

declare @StartTimeFilter varchar(10)='5'

select *
from test
where Convert(varchar(5),starttime,114) like Concat('%',@StartTimeFilter,'%')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 2015-10-01
    • 2016-06-29
    • 1970-01-01
    相关资源
    最近更新 更多