我面临以下问题。 我有一个数据库,其中有一个表可以保存日期(及时)。
现在我想知道两个时间戳之间日期的所有表信息,但是我收到以下错误: 01830. 00000 - “日期格式图片在转换整个输入字符串之前结束”。
到目前为止我所做的是这个查询:
import java.awt.event.MouseListener;
import javax.swing.JOptionPane;
import java.awt.event.*;
/**
*
*
* @author Christopher Porras
* @Version 0.1
* @Doing GUI
*/
public class Button extends JFrame {
private JButton bred;
private JButton bblue;
private JButton bgreen;
private JPanel mousepanel;
public Button()
{
super("ChangeColor");
setLayout(new FlowLayout());
setSize(200,200);
mousepanel = new JPanel();
mousepanel.setBackground(Color.white);
add(mousepanel);
bred = new JButton("REd");
add(bred);
bblue = new JButton("Blue");
add(bblue);
bgreen = new JButton("Green");
add(bgreen);
thehandler handler = new thehandler();
bred.addMouseListener(handler);
bblue.addMouseListener(handler);
bgreen.addMouseListener(handler);
}
private class thehandler implements MouseListener
{
public void mouseClicked(MouseEvent e)
{
if(e.getSource()==bred)
{
mousepanel.setBackground(Color.red);
}
else if(e.getSource()==bblue)
{
mousepanel.setBackground(Color.blue);
}
else if(e.getSource()==bgreen)
{
mousepanel.setBackground(Color.green);
}
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
//To change body of generated methods, choose Tools | Templates.
}
}
public static void main(String[]args)
{
Button button = new Button();
button.setVisible(true);
button.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
这不会给我任何结果,但应该有:
SELECT * FROM ARBEITSBLOCK WHERE STARTZEIT BETWEEN '30.11.2015 19:00:00'
and '01.12.2015 19:05:00';
答案 0 :(得分:3)
尝试此语句(使用Oracle语法)
SELECT *
FROM ARBEITSBLOCK
WHERE STARTZEIT BETWEEN TO_DATE ('12/04/2015 09:00:00 AM', 'mm/dd/yyyy hh:mi:ss AM')
AND TO_DATE ('12/04/2015 10:00:00 AM', 'mm/dd/yyyy hh:mi:ss AM');
答案 1 :(得分:1)
如果STARTZEIT是DATE列,那么为什么要将它与字符串进行比较?
通过这样做,你依靠甲骨文可以说"啊哈!这个字符串真的是一个日期,所以我会尝试为你转换它!"。这一切都很好,但Oracle如何知道如何格式化字符串中的日期?
嗯,有nls_date_format参数默认为“DD-MON-RR'”,我想您现在可以看到为什么要获得" date格式图片在转换整个输入字符串之前结束"错误,因为' DD-MON-RR'比2015年11月30日19:00:00'。
短得多您应该明确地将字符串转换为日期,而不是依赖于此隐式转换以及与之一致的错误(您已经发现!),您可以使用{{1功能。
例如:
to_date()
答案 2 :(得分:0)
Oracle不会以您看到的格式 存储日期。它在内部存储在7 bytes
中,每个字节存储日期时间值的不同组件。
您必须使用 TO_DATE 并使用正确的 FORMAT MODEL 将文字明确转换为 DATE 。
SELECT *
FROM ARBEITSBLOCK
WHERE STARTZEIT BETWEEN
TO_DATE('30.11.2015 19:00:00', 'DD.MM.YYYY HH24:MI:SS')
AND
TO_DATE('01.12.2015 19:05:00', 'DD.MM.YYYY HH24:MI:SS');
请注意,DATE
数据类型包含日期和时间元素, TIMESTAMP 是扩展到{{1} } 数据类型。