gpt4 book ai didi

sql - 在 SQL 中查询比较日期

转载 作者:行者123 更新时间:2023-12-01 17:29:13 34 4
gpt4 key购买 nike

我有一个表,其中的日期全部发生在 11 月份。我写了这个查询

select id,numbers_from,created_date,amount_numbers,SMS_text 
from Test_Table
where
created_date <= '2013-04-12'

此查询应返回第 11 个月(11 月)发生的所有事情,因为它发生在日期“2013-04-12”(12 月)之前

但它仅返回小于 04 天内发生的可用日期 (2013-04-12)

难道只是比较当天的部分?而不是整个日期?

如何解决这个问题?

Created_date 的类型为日期

日期格式默认为yyyy-dd-MM

最佳答案

不要使用含义取决于本地文化的“2013-04-12”,而使用被认为是文化不变格式的“20130412”。

如果您想与 12 月 4 日进行比较,您应该写“20131204”。如果您想与 4 月 12 日进行比较,您应该写“20130412”。

文章Write International Transact-SQL Statements SQL Server 文档中的内容解释了如何编写文化不变的语句:

Applications that use other APIs, or Transact-SQL scripts, stored procedures, and triggers, should use the unseparated numeric strings. For example, yyyymmdd as 19980924.

编辑

由于您使用的是 ADO,因此最好的选择是参数化查询并将日期值作为日期参数传递。这样您就可以完全避免格式问题,并获得参数化查询的性能优势。

更新

要在文字中使用 ISO 8601 格式,必须指定所有元素。引用from the ISO 8601 section of datetime's documentation

To use the ISO 8601 format, you must specify each element in the format. This also includes the T, the colons (:), and the period (.) that are shown in the format.

... the fraction of second component is optional. The time component is specified in the 24-hour format.

关于sql - 在 SQL 中查询比较日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19924236/

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