从字符串转换日期/或时间时,转换失败 70C

用的VS2012版本写的程序,然后数据库是SQL2008版本。程序运行的时候这个部分一直出现这个问题,只要是涉及时间的。看了好久不知道哪里出错了。
图片说明图片说明

数据库的话是这样设置的:

图片说明

代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace HotelManage
{
public partial class FormPurchase : Form
{
public FormPurchase()
{
InitializeComponent();
}
OperatorDBClass operat = new OperatorDBClass();

    private void InitDataGridViewHead()
    {
        this.dataGridViewPurchase.Columns[0].HeaderText = "商品编号";
        this.dataGridViewPurchase.Columns[0].Width = 100;

        this.dataGridViewPurchase.Columns[1].HeaderText = "供货商编号";
        this.dataGridViewPurchase.Columns[1].Width = 180;

        this.dataGridViewPurchase.Columns[2].HeaderText = "商品名称";
        this.dataGridViewPurchase.Columns[2].Width = 140;

        this.dataGridViewPurchase.Columns[3].HeaderText = "商品规格";
        this.dataGridViewPurchase.Columns[3].Width = 100;

        this.dataGridViewPurchase.Columns[4].HeaderText = "进价";
        this.dataGridViewPurchase.Columns[4].Width = 80;

        this.dataGridViewPurchase.Columns[5].HeaderText = "售价";
        this.dataGridViewPurchase.Columns[5].Width = 100;

        this.dataGridViewPurchase.Columns[6].HeaderText = "数量";
        this.dataGridViewPurchase.Columns[6].Width = 80;

        this.dataGridViewPurchase.Columns[7].HeaderText = "生产日期";
        this.dataGridViewPurchase.Columns[7].Width = 160;

        this.dataGridViewPurchase.Columns[8].HeaderText = "保质期";
        this.dataGridViewPurchase.Columns[8].Width = 160;

    }

    /// <summary>
    /// 录入商品信息
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void buttonOk_Click(object sender, EventArgs e)
    {
        try
        {
            if (textBoxId.Text != "" && textBoxName.Text != "" && textBoxBid.Text != "" && textBoxSellPrice.Text != "")
            {
                if (operat.FindIdExist("Products", "products_id", textBoxId.Text) == true)
                {
                    MessageBox.Show("该商品编号已经存在,请重新添加!", "提示");
                    return;
                }
                else
                {
                    string productor_id = this.textBoxId.Text;
                    string vendorsname = ""; //供货商名称
                    string productor_name = this.textBoxName.Text;
                    string productor_spec = this.comboBoxSpec.Text;
                    string productor_bid = this.textBoxBid.Text;
                    string productor_sell_price = this.textBoxSellPrice.Text;
                    string productor_date = this.dateTimePicker1.Text;
                    string productor_quality_date = this.comboBoxQuality.Text;

                    vendorsname = operat.FindVendorsId("Vendors", comboBoxVen.Text);

                    string InsertSql = "insert into Products values(" + productor_id + ",'"+ vendorsname+"','" + productor_name + "','";
                    InsertSql += productor_spec + "','" + productor_bid + "','" + productor_sell_price + "','"+textBoxProNum.Text+"','" + productor_date + "','";
                    InsertSql += productor_quality_date + "')";

                    if (operat.OperateData(InsertSql) > 0)
                    {
                        operat.StoreManage(productor_id, productor_sell_price,textBoxProNum.Text);
                        MessageBox.Show("录入商品信息成功!", "提示");
                        operat.DataBind(this.dataGridViewPurchase, "select *from Products", "Products");
                        return;
                    }
                }
            }
            else
            {
                MessageBox.Show("请填满所有字段", "提示");
                return;
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        finally
        {
            //关闭数据库
            operat.CloseDatabaseCnn();
        }
    }

    private void FormPurchase_Load(object sender, EventArgs e)
    {
        operat.BindDropdownlist("Vendors", this.comboBoxVen, 1);
        operat.DataBind(this.dataGridViewPurchase, "select *from Products", "Products");
        InitDataGridViewHead();

        //绑定商品单位到下拉框
        operat.BindDropdownlist("Products_Unit", this.comboBoxSpec, 1);
    }
}

}

6个回答

string productor_date = this.dateTimePicker1.Text;
-->
string productor_date = this.dateTimePicker1.Value;

wenhuizl
wenhuizl string productor_date =dateTimePicker1.Value.ToString("yyyy/MM/dd HH:mm:ss");
4 个月之前 回复
wenhuizl
wenhuizl 回复weixin_42726938: 数据执行 select CONVERT(datetime,'2012/02/02 13:22:22');
4 个月之前 回复
weixin_42726938
weixin_42726938 回复wenhuizl: 我就是这样的啊。。。
4 个月之前 回复
wenhuizl
wenhuizl 回复weixin_42726938: 跟踪这个productor_date值:数据库日期 是这种格式2000/1/1 00:00:01 ;还有一个是调整本地日期显示格式,不能有星期!
4 个月之前 回复
weixin_42726938
weixin_42726938 试了一下不行
4 个月之前 回复

DATE_FORMAT(a.finish_time,'%Y-%m')=#{timeStamp,jdbcType=TIMESTAMP}

weixin_42726938
weixin_42726938 什么意思。
4 个月之前 回复

你的日期是不是带中文 年 月 日,把中文替换成 - 试试

lhp1224
lhp1224 换成:string productor_date = String.Format("{0:yyyy-MM-dd HH:mm:ss}", this.dateTimePicker1.Value); 试试
4 个月之前 回复
weixin_42726938
weixin_42726938 回复lhp1224: 有
4 个月之前 回复
lhp1224
lhp1224 回复weixin_42726938: string productor_date = this.dateTimePicker1.Text; 这里取到的值里面有没有中文 年 月 日
4 个月之前 回复
weixin_42726938
weixin_42726938 数据库里的吗。没有
4 个月之前 回复
weixin_42726938
weixin_42726938 这个帖子我看过。但是我没用过单引号呀。
4 个月之前 回复

你把这段SQL打出来看看。一般来讲如果安装的不是 SQL Server 的本地化版本,SQL Server 的日期格式为英语(美国)日期格式 MM/DD/YY,而在许多国家中使用 DD/MM/YY 日期格式,不是这种默认的 MM/DD/YY 格式,有时候就会出现这种日期字符串转换不了的情况,一种解决方法就是使用 ISO 标准格式向 SQLServer 发送日期时间数据,即“YYYYMMDD”(不含分隔符),这种不受默认语言的影响。或者用 SET DATEFORMAT 指定你的日期格式。
你可以用 select @@LANGID, @@LANGUAGE, GETDATE() 来查看服务器使用的语言id,语言,以及日期格式,如果在SQL用的日期格式对不上,就会出现这种无法转换日期字串的问题

weixin_42726938
weixin_42726938 回复jmctian: 私信你了。
4 个月之前 回复
jmctian
jmctian 回复weixin_42726938: 你用SQL Server Management Studio连接到数据库服务器后,执行一下 select @@LANGID, @@LANGUAGE, GETDATE() ,看数据库服务器端用的语言和日期格式,在和在代码中的日期格式进行对比,如果不一致就很容易出现转换错误问题。那么就需要在程序代码中修改日期字串,使它与数据库服务器端的保持一致。
4 个月之前 回复
weixin_42726938
weixin_42726938 能教一下具体操作吗。
4 个月之前 回复

不敢确定是否是模拟的效果跟你一样,这里说下我的意见:
图片说明

这是dateTimePicker空间的默认属性下显示的效果。当获取Text是是由年月日的。
建议更改下空间属性:
图片说明
显示效果:
图片说明 不知道符不符合你的显示要求。
这里是转datetime的结果,是成功的:
图片说明

weixin_42726938
weixin_42726938 我这边看没有这个空间属性。。
4 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问