Sql server 如何在Sql Server中使用DateTime进行模式查找
您好,我在sql server表中有一些包含datetime2值的条目。当我运行select语句时,我得到UPDATEDATETIME列的以下内容:Sql server 如何在Sql Server中使用DateTime进行模式查找,sql-server,ssms,Sql Server,Ssms,您好,我在sql server表中有一些包含datetime2值的条目。当我运行select语句时,我得到UPDATEDATETIME列的以下内容: UPDATEDATETIME 2021-02-11 23:14:05.727 2021-02-11 22:08:01.960 2021-02-10 19:28:10.263 2021-02-10 19:28:10.263 2021-02-10 19:28:10.263 2021-02-10 19:28:10.263 我只想获取2021-02-10
UPDATEDATETIME
2021-02-11 23:14:05.727
2021-02-11 22:08:01.960
2021-02-10 19:28:10.263
2021-02-10 19:28:10.263
2021-02-10 19:28:10.263
2021-02-10 19:28:10.263
我只想获取2021-02-10中的值,因此我编写了以下查询:
select * from dbo.logtable where UPDATEDATETIME like '2021-02-10%'
但是,这不会返回任何值。我一直认为我可以使用这种模式匹配来查找datetime,因为可以将datetime作为字符串输入?
如何仅获取2021-02-10的日期时间?使用范围
SELECT *
FROM dbo.logtable
WHERE updatedatetime >= '2021-02-10'
AND updatedatetime < '2021-02-11';
选择*
从dbo.logtable
其中updatedatetime>='2021-02-10'
和更新日期<'2021-02-11';
铸造将有所帮助
SQL
-- DDL and sample data population, start
DECLARE @tbl TABLE (ID INT IDENTITY PRIMARY KEY, UPDATEDATETIME DATETIME2(3));
INSERT INTO @tbl (UPDATEDATETIME) VALUES
('2021-02-11 23:14:05.727'),
('2021-02-11 22:08:01.960'),
('2021-02-10 19:28:10.263'),
('2021-02-10 19:28:10.263'),
('2021-02-10 19:28:10.263'),
('2021-02-10 19:28:10.263');
-- DDL and sample data population, end
SELECT * FROM @tbl
WHERE CAST(UPDATEDATETIME AS DATE) = '2021-02-10';
输出
+----+-------------------------+
| ID | UPDATEDATETIME |
+----+-------------------------+
| 3 | 2021-02-10 19:28:10.263 |
| 4 | 2021-02-10 19:28:10.263 |
| 5 | 2021-02-10 19:28:10.263 |
| 6 | 2021-02-10 19:28:10.263 |
+----+-------------------------+
您可以使用以下查询:
SELECT *
FROM dbo.logtable
WHERE UPDATETIME >= '2021-02-10';
斯莫尔先生,我同意。写我的答案时没有太多思考。我假设datetime没有regex这样的东西?这是最好的方法,因为它可以很好地处理索引。如果变量中有特定的日期,请使用
updatedatetime>=@date和updatedatetime
@dozie419您确实不想这样做。用于操纵日期,它们是最好的。