JAVA在数据库中插入日期,日期由字符串变量传递值,占位符?要用单引号吗,怎么写?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA在数据库中插入日期,日期由字符串变量传递值,占位符?要用单引号吗,怎么写?相关的知识,希望对你有一定的参考价值。
StringBuilder sqlcmd = new StringBuilder();
sqlcmd.append("insert into sfism4.u_sfis_daily_check_t ");
sqlcmd.append(" (SELECT LINE_NAME,SECTION_NAME,GROUP_NAME,STATION_NAME,0,to_date(?, 'yyyy-mm-dd hh24:mi:ss'),0 FROM sfis1.U_SFIS_INSPECTION_DEVICE_T ");
sqlcmd.append("where LINE_NAME=? AND ROWNUM=1) ");
第一个占位符?要怎么写,引号需要吗,设置值如下
ps.setString(1, sdf.format(fromDate));
ps.setString(2, lineName);
其中fromDate是一个字符串,类似这样2014-3-11 13:50:00
我想传一个变量,而且 这样写也不能传入数据库啊。。
追答变量只要是个String型的 就可以用这种方式传进sql语句中啊。。
追问数据库里的字段是date类型,如果不转换,就 不能写入,所以我才用to_date函数的,怎么改
追答不需要转换把 date类型只能传 年月日 不能传时间 除非你是datetime类型的 比如说下面这个例子我用的是mysql数据库而且表里面的是datetime类型
例如:
Class.forName("com.mysql.jdbc.Driver");
String sql="INSERT into aaa value(?)";
String datetime="2014-3-11 13:50:01";
Connection conn=DriverManager.getConnection("jdbc:mysql://192.168.0.116:3306/yqw?user=root&password=root");
PreparedStatement pre=conn.prepareStatement(sql);
pre.setString(1,datetime);
pre.executeUpdate();
pre.close();
conn.close();
改完之后,插入数据库,没有报错也没有写入数据,这是什么情况
追答不会这样把 没有报错就表明写入了数据啊 如果数据没写入 它就会报错 你用的是不是可视化工具
navicat 还是 mysql-font 你刷新下试下
数据库里的字段是date类型,不能穿String,所有要用to_date进行转换,怎么实现用占位符传递变量转换成日期类型,这个要怎么写才对
追答我有点疑问。
你不就是要传字符串类型。然后用to_date转换成日期类型么?你既然sql用to_date了里面不适用字符串类型么?
是我理解错你的意思了,你说的是对的,改完后写入数据库也没有反应,也没有报错,是怎么回事
追答你这怎么不像插入语句呢。怎么还有SELECT 呢。
追问有一种是这样写插入语句的,insert into table select
追答建议你先拿sql语句在数据库里运行下
insert into table select相当于赋值表中的字段值。
如果两表字段相同,则可以直接这样用。
insert into table_a select * from table_b
如果两表字段不同,a表需要b中的某几个字段即可,则可以如下使用:
insert into table_a(field_a1,field_a2,field_a3) select field_b1,field_b2,field_b3) from table_b
以上语句前提条件是每个字段对应的字段类型相同或可以自动转换。
楼主前面是不是忘记指定字段了/
改成ps.setString(1, fromDate);放个字符串数据类型的就好,不要转换成日期数据类型追问
数据库里的字段是date类型,不能穿String,所有要用to_date进行转换,怎么实现用占位符传递变量转换成日期类型
追答在sql语句 insert into table (a,b,c,d) values (to_date(?,'yyyy-mm-dd hh24:mi:ss'),b,c,d);
如何使用 Codeigniter 将 JQuery datepicker 中的值插入 MySQL 日期数据类型?
【中文标题】如何使用 Codeigniter 将 JQuery datepicker 中的值插入 MySQL 日期数据类型?【英文标题】:How to insert values from JQuery datepicker to MySQL date datatype using Codeigniter? 【发布时间】:2012-09-13 15:50:09 【问题描述】:我无法将 JQuery Datepicker 中的值插入到具有 Date 数据类型的 MySQL 数据库中。我将如何将字符串转换为日期数据类型?我将 Codeigniter 与 MVC 一起使用。这是我的代码:
javascript
<script>
$(function()
$( "#datepicker" ).datepicker(
showOn: "button",
buttonImage: "images/icons/calendar_24.png",
buttonImageOnly: true,
onSelect: function(dateText, inst)
$("input[name='dob']").val(dateText);
);
);
</script>
控制器
function create()
$data = array(
'FirstName' => $this->input->post('fname'),
'DateofBirth' => $this->input->post('dob')
);
$this->site_model->add_record($data);
$this->index();
查看
<?php echo form_open('site/create');?>
<p>
<label for="fname">First Name:</label>
<input type="text" name="fname" />
</p>
<p>
<input type="text" name='dob' id="datepicker" />
</p>
谢谢大家! 我在谷歌阅读了一些解决方案 我这样做了:
控制器:
function create()
$date = $this->input->post('dob');
$data = array(
'FirstName' => $this->input->post('fname'),
'DateofBirth' => date('Y-m-d', strtotime($date))
);
$this->site_model->add_record($data);
$this->index();
这解决了我的问题! :)
【问题讨论】:
MySQL 日期是一个具有特定格式的简单字符串:YYYY-MM-DD
,范围从1000-01-01
到9999-12-31
。只需将收到的日期转换为这种格式(如果需要)并插入即可。
【参考方案1】:
我假设您的 MySQL 表的 dob 列是 DATE
类型。
Date
类型采用 yyyy-mm-dd
格式的值,例如2012-09-21
所以要回答您的问题 - 您需要将日期选择器中的日期格式化为上述有效格式。例如如果你的 datepicker 日期是 dd-mm-yy
格式,你需要使用控制器中 php 的 date()
函数将其转换为 mysql 日期格式....(还有其他方法可以处理日期,如 datetime 类)
function create()
$data = array(
'FirstName' => $this->input->post('fname'),
'DateofBirth' => date('Y-m-d', strtotime(str_replace('-', '/', $this->input->post('dob'))));
);
$this->site_model->add_record($data);
$this->index();
使用 strtotime() 时的注意事项
m/d/y 或 d-m-y 格式的日期可以通过查看来消除歧义 各个组件之间的分隔符:如果分隔符是 斜线 (/),则假定为美式 m/d/y;而如果 分隔符是破折号 (-) 或点 (.),然后是欧洲 d-m-y 格式 是假定的。
【讨论】:
谢谢@Vamsi 你在考文垂大学学习过吗?我想我认识一个叫 Vamsi 的人。【参考方案2】:<script>
$(function()
$( "#datepicker" ).datepicker(
showOn: "button",
buttonImage: "images/icons/calendar_24.png",
buttonImageOnly: true,
dateFormat: 'Y-m-d' // No need to add onselect , value selected will automatically be added to input field #datepicker
);
);
</script>
你的代码很好
【讨论】:
【参考方案3】:$(document).ready(function()
var year=new Date().getFullYear();
var yearTo=year-18;
var yearFrom=year-100;
//display the years from hundred years in the past till 18 years in the past
$( "#datePickerDOB" ).live("click",function()
$( "#datePickerDOB" ).datepicker(
changeMonth: true,
changeYear: true,
yearRange: yearFrom+":"+yearTo,
dateFormat: "dd-mm-yy"
);
);
);
【讨论】:
【参考方案4】:使用以下格式设置日期选择器:
$('#datepicker').datepicker(dateFormat : 'yy-mm-dd');
【讨论】:
【参考方案5】:您的控制器应如下所示:
$date = $this->input->post('dob');
$data = array(
'FirstName' => $this->input->post('fname'),
'DateofBirth' => date('Y-m-d', strtotime($date))
);
$this->site_model->add_record($data);
$this->index();
我觉得这个更适合你
【讨论】:
以上是关于JAVA在数据库中插入日期,日期由字符串变量传递值,占位符?要用单引号吗,怎么写?的主要内容,如果未能解决你的问题,请参考以下文章
将 HTML 表单日期传递给 VB 变量以进行 SQL 插入