gpt4 book ai didi

where 子句中的 Oracle 日期比较

转载 作者:行者123 更新时间:2023-12-04 23:39:03 24 4
gpt4 key购买 nike

例如,我有一个带有 DOJ(加入日期)列的学生表,现在它的类型设置为 DATE,因为我已经以 dd-mon-yy 格式存储了记录。

我在运行时有一个 IN 参数,日期作为字符串传递,其格式为 dd/mm/yyyy。如何比较和获取日期结果?

我想为每个我的数据库表学生获取 DOJ 为 25-AUG-92 的学生的记录计数,但我在 IN 参数中以 dd/mm/yyyy 格式获取日期为 varchar,请指导。

我尝试了多种选择,例如 trunc , to_date , to_char但是,不幸的是似乎没有任何效果。

最佳答案

I have a student table with a DOJ(date of joining) column with its type set as DATE now in that I have stored records in dd-mon-yy format.



不完全是, DATE数据类型没有格式;它在表中内部存储为 7-bytes (年为 2 个字节,月、日、时、分和秒各为 1 个字节)。您正在使用的用户界面(即 SQL/PLUS、SQL Developer、Toad 等)将处理 DATE 的格式。从它的二进制格式到人类可读的格式。在 SQL/Plus(或 SQL Developer)中,这种格式基于 NLS_DATE_FORMAT session parameter .

如果 DATE仅使用日、月和年输入,那么时间组件(可能)将设置为 00:00:00 (午夜)。

I have an IN param at runtime with date passed as string or say varchar and its in dd/mm/yyyy format. How do I compare and fetch results on date.?



假设您 DOJ 专栏的时间部分始终是午夜,那么:
SELECT COUNT(*)
FROM students
WHERE doj = TO_DATE( your_param, 'dd/mm/yyyy' )

如果不总是午夜,那么:
SELECT COUNT(*)
FROM students
WHERE TRUNC( doj ) = TO_DATE( your_param, 'dd/mm/yyyy' )

或者:
SELECT COUNT(*)
FROM students
WHERE doj >= TO_DATE( your_param, 'dd/mm/yyyy' )
AND doj < TO_DATE( your_param, 'dd/mm/yyyy' ) + INTERVAL '1' DAY

关于where 子句中的 Oracle 日期比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43502875/

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