gpt4 book ai didi

t-sql - 用于比较日期的 SQL 查询的正确语法

转载 作者:行者123 更新时间:2023-12-03 09:13:22 25 4
gpt4 key购买 nike

我正在寻找正确的语法来测试 TSQL WHERE 子句是否datetime2(7) 类型等于另一个类型。

WHERE (CAST(modifiedDate AS DATETIME) = '9/29/2016 3:24:24 PM')

我也尝试过

WHERE (CAST(modifiedDate AS DATETIME) LIKE '9/29/2016 3:24:24 PM')

还有

WHERE (CAST(modifiedDate AS datetime2) = CAST('09/29/2016 3:24:24 PM' AS datetime2))

我相信我的右侧表述不正确,但这是数据库中的确切值。

我正在查找与该日期时间戳匹配的所有记录。

需要明确的是,我确实尝试过搜索其他结果..'

enter image description here

我认为这个网站上的搜索结果有点不稳定。

数据库字段类型...

enter image description here

最佳答案

要比较 DATETIME 值,您需要比较 DATETIME 值。您可以使用 TSQL CONVERT 函数将字符串转换为 DATETIME 数据类型。例如:

CONVERT(DATETIME, '2016-09-28 15:34:00', 20)

请注意,第三个参数是“样式”。上面的示例使用样式 20,即 ODBC Canonical 样式 YYYY-MM-DD HH:MI:SS(24 小时制)。还有其他几种可用的样式,也许您会找到一种与您的字符串格式匹配的样式。 (如果找不到匹配项,则需要使用一些字符串操作函数将字符串重新格式化为可用样式的格式。)

作为第二个参数,您可以使用字符串文字(如上例所示),也可以使用对 CHAR 或 VARCHAR 列的引用。

引用:CAST and CONVERT (Transact-SQL)


在另一个不同但相关的问题上,请注意:为什么日期时间值在数据库中存储为字符串,而不是 DATETIME 数据类型?


如果列的数据类型是 DATETIME2(7),那么我认为您会想要比较 DATETIME2(7) 数据类型。

如果我们进行“等于”比较,这将是完全匹配,包括秒的小数部分。如果您想匹配给定秒内的 DATETIME2(7) 值,您可以使用范围比较:

  WHERE t.my_col_datetime2_7  >= '2016-09-29 15:24:24'
AND t.my_col_datetime2_7 < '2016-09-29 15:24:25'

请注意,允许与 DATETIME2 进行比较的字符串文字的格式为 YYYY-MM-DD HH:MI:SS(24 小时制),带有可选的小数秒 .nnnnnnn.

引用:Supported String Literal Formats for datetime2

关于t-sql - 用于比较日期的 SQL 查询的正确语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39779281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com