例如,我有一个学生表,带有一个DOJ(加入日期)列,其类型现在设置为DATE,因为我以dd-mon-yy格式存储了记录。
我在运行时有一个IN参数,日期以字符串形式传递,其格式为dd / mm / yyyy。如何比较和获取日期结果?
我想获取每个数据库表学生的DOJ为25-AUG-92的学生的记录数,但是我以dd / mm / yyyy格式在IN参数中获取varchar的日期,请指导。
我曾尝试多种选择,例如trunc,to_date,to_char但遗憾的是似乎没有任何工作。
我有一个学生表,带有一个DOJ(加入日期)列,其类型设置为
DATE现在,因为我以dd-mon-yy格式存储记录。
不完全是,DATE数据类型没有格式。它在内部以7字节的形式存储在表中(年为2字节,月,日,时,分和秒均为1字节)。您正在使用的用户界面(即SQL / PLUS,SQL Developer,Toad等)将处理DATE从其二进制格式到人类可读格式的格式。在SQL / Plus(或SQL Developer)中,此格式基于NLS_DATE_FORMATsession参数。
如果DATE仅使用日,月和年输入,则时间部分(可能)将设置为00:00:00(午夜)。
我在运行时有一个IN参数,日期以字符串形式传递或说varchar及其
dd/mm/yyyy格式。如何比较和获取日期结果?
假设您的DOJ列的时间部分始终为午夜,则:
SELECT COUNT(*)
FROM students
WHERE doj = TO_DATE( your_param, 'dd/mm/yyyy' )
Run Code Online (Sandbox Code Playgroud)
如果不总是午夜,则:
SELECT COUNT(*)
FROM students
WHERE TRUNC( doj ) = TO_DATE( your_param, 'dd/mm/yyyy' )
Run Code Online (Sandbox Code Playgroud)
要么:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30050 次 |
| 最近记录: |