将 DateTime 作为 VarChar 返回以在 DataGridView 中使用

Posted

技术标签:

【中文标题】将 DateTime 作为 VarChar 返回以在 DataGridView 中使用【英文标题】:Return DateTime as VarChar for use in DataGridView 【发布时间】:2016-06-01 09:42:39 【问题描述】:

我在 Visual Studio 中编写了一个简单的数据库应用程序来访问 XAMPP 中的一个小型数据库。

我想用数据库中日期字段的内容填充网格视图。 我在这里遇到的主要问题是 CONVERT 不起作用(语法错误),但我觉得对于简单显示日期的任务来说,有一个更简单的答案。

这是表的创建:

CREATE TABLE `lans` (
`l_id` INT(11) NOT NULL AUTO_INCREMENT,
`l_datum` DATE NOT NULL,
PRIMARY KEY (`l_id`),
UNIQUE INDEX `datum` (`l_datum`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
AUTO_INCREMENT=2;

我正在尝试运行的查询:

gridViewLans.DataSource = CLanDB.SQLOpen("select CONVERT(varchar,l_datum, 104) from lans").Tables[0].DefaultView;

还有我写的函数 SQLOpen。​​

public static DataSet SQLOpen(String cSQL) 
    mysqlCommand qCmd = oDB.CreateCommand();
    qCmd.CommandText = cSQL;
    MySqlDataAdapter adap = new MySqlDataAdapter(qCmd);
    DataSet set = new DataSet();
    adap.Fill(set);
    return set;

我得到的错误:

SQL Fehler (1064): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'varchar(100), lans.l_datum, 104) as Lan from lans' at line 1

如何解决语法错误?

【问题讨论】:

为什么不进行查询,当您返回数据集时,将数据网格绑定到 set.Tables[0]` 一旦返回,您也可以在 datagridview 模板中格式化 DataTime 字段,执行类似的操作这个DataFormatString="0:MM-dd-yyyy" google搜索如何使用DataFormatString属性 该死,我很愚蠢,这不是表格的显示,而是添加不起作用的新条目并引发格式错误的条目,该条目拒绝绑定到网格视图。 "104" 闻起来像 Sybase 语法,而不是 MySQL。 不要“规范化”日期! 【参考方案1】:

问题是表格中的条目格式错误。 一旦我删除,我可以使用

gridViewLans.DataSource = CLanDB.SQLOpen("select l_datum as LAN from lans").Tables[0];

而且效果很好。

【讨论】:

以上是关于将 DateTime 作为 VarChar 返回以在 DataGridView 中使用的主要内容,如果未能解决你的问题,请参考以下文章

即使没有 datetime 列,也获取“将 varchar 数据类型转换为 datetime 数据类型导致超出范围的值”

从 varchar 转换为 datetime 以进行排序

将 DateTime 转换为整数

将 varchar 数据类型转换为 datetime 数据类型导致 SQL 查询中的值超出范围

使用自定义格式在 SQL Server 上将 varchar 转换为 datetime

MySql 按 Mmm-dd-yyyy 中的(varchar)日期排序