Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL中的日期相等_Sql_Jsp_Date - Fatal编程技术网

SQL中的日期相等

SQL中的日期相等,sql,jsp,date,Sql,Jsp,Date,我将记录存储在一个表中,表中有一列存储SYSDATE 现在,我运行了一个查询,并在JSP页面中显示了该表的所有行。我给了一个按钮来选择一行并更新它 我想在SQL表中选择那个特定的行来更新它。为此,每一行的date列都是唯一的,我想使用它来使用如下查询选择该行 Update Table Set record_seen='Y' Where sub_date Like to_date('01-01-2014','dd/mm/yyyy') 上面的查询有效,但我如何在上面的查询中使用整个系统日期,如

我将记录存储在一个表中,表中有一列存储SYSDATE

现在,我运行了一个查询,并在JSP页面中显示了该表的所有行。我给了一个按钮来选择一行并更新它

我想在SQL表中选择那个特定的行来更新它。为此,每一行的date列都是唯一的,我想使用它来使用如下查询选择该行

Update Table 
Set record_seen='Y' 
Where sub_date Like to_date('01-01-2014','dd/mm/yyyy')

上面的查询有效,但我如何在上面的查询中使用整个
系统日期,如'2014-07-11 10:37:52.0'

这对于注释来说有点长。我怀疑你已经解决了你的问题。查询将类似于:

Update Table 
    Set record_seen='Y' 
    Where to_char(sub_date, 'YYYY-MM-DD HH24:MI:SS') = '2014-07-11 10:37:52';
create index idx_table_tochar_subdate on table(to_char(sub_date, 'YYYY-MM-DD HH24:MI:SS'));
缺点是它不会使用索引,除非您实现功能索引,例如:

Update Table 
    Set record_seen='Y' 
    Where to_char(sub_date, 'YYYY-MM-DD HH24:MI:SS') = '2014-07-11 10:37:52';
create index idx_table_tochar_subdate on table(to_char(sub_date, 'YYYY-MM-DD HH24:MI:SS'));

您可能正在使用Oracle。向每一行添加伪列可能是一件痛苦的事情,因为它需要为每个表创建一个序列和一个触发器(至少在旧版本的Oracle中是这样)。您也可以为此使用
rowid
伪列。您不会向用户显示
rowid
,但会存储它并将其用于更新。是有关
rowid

的详细信息。如果您有该行的代理键,则更新将容易得多。它避免了日期精度问题和日期冲突。将格式更改为
'YYYY-MM-DD HH24:MI:SS.ssssss'
。errrgh,这看起来很糟糕,您肯定需要一个代理键(通常是一个自动递增的整数),我想这样做。此表用于存储账单记录。每天添加数千行,使用代理键是一个好选择吗?我发现使用代理键/将日期存储为字符串:to_char(SYSDATE)很有帮助。相比之下,我猜代理键的工作速度也会更快,占用的存储空间也会少得多。spacerowid正是我想要的!这样我就不必创建单独的序列,并且可以保持表模式的完整性。