[英]How to handle mysql datetime column when the value is 0000-00-00 00:00:00
[英]how to insert to database 00/00/0000 in datetime column when datetime picker checkbox not checked C# and SQL SERVER?
如果未选中复选框属性,我希望能够插入数据库 00/00/0000 或除 datetimepicker 的今天的日期值以外的任何其他值,我尝试了来自该站点的多个解决方案,但它始终插入今天的日期时间值如果未选中复选框。
这是保存按钮代码:
private void btnSave_Click(object sender, EventArgs e)
{
if (dateOpened.Checked==true)
{
dateOpened.Enabled = true;
dateOpened.Format = DateTimePickerFormat.Short;
}
else
{
dateOpened.Enabled = false;
dateOpened.Format = DateTimePickerFormat.Custom;
dateOpened.CustomFormat = "00/00/0000";
}
if (dateFinished.Checked== true)
{
dateFinished.Enabled = true;
dateFinished.Format = DateTimePickerFormat.Short;
}
else
{
dateFinished.Enabled = false;
dateFinished.Format = DateTimePickerFormat.Custom;
dateFinished.CustomFormat = "00/00/0000";
}
if (add==1)
{
test.ADD_INVENTORIES(Convert.ToInt32(comboTest.SelectedValue),txtLotNo.Text,
Convert.ToInt32(txtNoOfTests.Text),
DateTime.Parse(dateReceived.Value.ToString()),
DateTime.Parse(dateExpiry.Value.ToString()),
DateTime.Parse(dateOpened.Value.ToString()),
txtReceivedfrom.Text,
DateTime.Parse(dateFinished.Value.ToString()),
Convert.ToInt32(comboDepts.SelectedValue),
Convert.ToInt32(txtRemaning.Text),
Convert.ToInt32(comboCompany.SelectedValue),
Convert.ToInt32(comboType.SelectedValue));
MessageBox.Show("Stock Added Successfully", "New Stock", MessageBoxButtons.OK, MessageBoxIcon.Information);
cleardata();
}
}
这是存储过程代码:
CREATE proc [dbo].[ADD_INVENTORIES]
@testid int,
@lot_no nvarchar(20),
@No_Of_Tests int,
@Received_Date datetime,
@Expiry_Date datetime,
@Opened_Date datetime,
@Received_From nvarchar(50),
@Finished_Date datetime,
@deptid int,
@Remaining_Tests int,
@Company_id int,
@reagent_type int
as
INSERT INTO [dbo].[Inventory_Details]
([testid]
,[lot_no]
,[No_Of_Tests]
,[Received_Date]
,[Expiry_Date]
,[Opened_Date]
,[Received_From]
,[Finished_Date]
,[deptid]
,[Remaining_Tests]
,[Company_id]
,[reagent_type])
VALUES
(@testid
,@lot_no
,@No_Of_Tests
,@Received_Date
,@Expiry_Date
,@Opened_Date
,@Received_From
,@Finished_Date
,@deptid
,@Remaining_Tests
,@Company_id
,@reagent_type)
如果未选中 datetimepicker 的复选框,我想为日期时间列(Opened_Date 和 Finished_Date)插入数据库 00/00/0000。 但是它插入了今天的日期和时间,我不知道遗漏在哪里,也许我需要更改插入方式,但这种方式不正确:
DateTime.Parse(dateOpened.Value.ToString()),
DateTime.Parse(dateFinished.Value.ToString()),
如何解决这个问题?
我改变了处理这种情况的方式,我从 insert 语句中删除了 Opened_Date 和 Finished_Date 列,因为我没有先使用它,我需要在稍后使用这些产品时填写这些日期,那时我将创建更新存储过程来更新使用产品时打开日期,并在产品完成时输入完成日期。
CREATE proc [dbo].[ADD_INVENTORIES]
@testid int,
@lot_no nvarchar(20),
@No_Of_Tests int,
@Received_Date datetime,
@Expiry_Date datetime,
@Received_From nvarchar(50),
@deptid int,
@Remaining_Tests int,
@Company_id int,
@reagent_type int
as
INSERT INTO [dbo].[Inventory_Details]
([testid]
,[lot_no]
,[No_Of_Tests]
,[Received_Date]
,[Expiry_Date]
,[Received_From]
,[deptid]
,[Remaining_Tests]
,[Company_id]
,[reagent_type])
VALUES
(@testid
,@lot_no
,@No_Of_Tests
,@Received_Date
,@Expiry_Date
,@Received_From
,@deptid
,@Remaining_Tests
,@Company_id
,@reagent_type)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.