例如,我有一个学生表,其中包含 DOJ(加入日期)列,其类型设置为 DATE,现在我已以 dd-mon-yy 格式存储记录。
我在运行时有一个 IN 参数,其中日期作为字符串传递,其格式为 dd/mm/yyyy 。如何比较并获取日期结果?
我想获取每个数据库表学生的 DOJ 为 25-AUG-92 的学生记录计数,但我在 IN 参数中获取 dd/mm/yyyy 格式的 varchar 日期,请指导。
我尝试过多种选择,例如trunc
, to_date
, to_char
但是,不幸的是,似乎没有任何作用。
我有一个学生表,其中包含 DOJ(加入日期)列,其类型设置为DATE
现在我已经将记录存储在dd-mon-yy
format.
不完全是,DATE
数据类型没有格式;它内部存储在表中7-bytes(年为 2 个字节,月、日、时、分、秒各为 1 个字节)。您正在使用的用户界面(即 SQL/PLUS、SQL Developer、Toad 等)将处理DATE
从二进制格式到人类可读的格式。在 SQL/Plus(或 SQL Developer)中,此格式基于NLS_DATE_FORMAT会话参数.
If the DATE
仅使用日、月和年输入,那么时间部分(可能)将设置为00:00:00
(午夜)。
我在运行时有一个 IN 参数,其中日期作为字符串传递,或者说 varchar 及其 indd/mm/yyyy
格式。如何比较并获取日期结果?
假设 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' )
or:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)