gpt4 book ai didi

使用两个日期的 SQL 查询

转载 作者:行者123 更新时间:2023-12-04 20:25:14 25 4
gpt4 key购买 nike

当它包含单个日期时,我可以运行以下 SQL 查询。当我介绍第二个日期时,不会返回任何结果。
我还使用 DD/MM/YY格式,但只有一个日期。
我正在使用 Office 2010 并连接到 Oracle SQL 数据库。

Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim ConnectionString As String
Dim StrQuery As String

ConnectionString = SQLConnect 'This is a function that resolves to the connection string
cnn.Open ConnectionString
cnn.CommandTimeout = 180

StrQuery = "select ref, date from records where date > '10-MAY-20' And date < '13-MAY-20'"

rst.Open StrQuery, cnn

ThisWorkbook.Sheets("Sheet 1").Range("A2").CopyFromRecordset rst
rst.Close
cnn.Close
我尝试将查询修改为“选择noteno,从日期在'10-MAY-20'和'13-MAY-20'之间的记录中转换”。
当使用单个日期时,这两个查询都可以在 Oracle SQL Developer 中工作。
当通过 VBA 运行时,“选择 noteno,从日期为 '%MAY-20' 的记录中转换”也不起作用(但在 Oracle SQL 开发人员中很好)。

最佳答案

where date > '10-MAY-20' And date < '13-MAY-20'


'10-MAY-20'不是日期,而是字符串。日期没有任何格式,根据您特定于语言环境的 NLS 设置,它使用 TO_CHAR 以人类可读的格式显示。和正确的格式掩码。

此外,您应该避免使用两位数 YY代表年份,这就是全部原因 千年虫错误开始。始终使用 YYYY格式。

要将字符串转换为日期:

使用 TO_DATE和适当的格式掩码:
where  date_col > TO_DATE('10-MAY-2020', 'DD-MON-YYYY')  
and date_col < TO_DATE('13-MAY-2020', 'DD-MON-YYYY')

或者,使用 ANSI date literal使用固定格式 'YYYY-MM-DD' :
where  date_col > DATE '2020-05-10' and date < DATE '2020-05-13'

另一件事, DATE是Oracle保留字,可以看 documentation .也许,您正在使用 带引号的标识符 "date"即在保留字周围使用双引号。

i dont understand why is wasnt working with '10-MAY-20' as this is the required format in Oracle SQL developer



这可能是因为您的 SQL Developer 的 NLS 设置设置为 'DD-MON-YY'。 ,因此当您以该格式传递日期时,它会隐式转换为日期。但是,如果您更改格式,它将不起作用:
alter session set NLS_DATE_FORMAT = 'YYYY-MM-DD';

关于使用两个日期的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61885072/

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