OleDB查询中的格式化日期

时间:2016-01-12 14:38:16

标签: c# mysql csv import visual-foxpro

我正在尝试找到一种方法来正确格式化SELECT语句中的Date,该语句从旧的Visual Fox Pro数据库加载数据。我需要这样做,以便我可以将其加载到CSV中,然后将其加载到MySQL中,它采用日期格式'yyyy-MM-dd'。

这是我目前的询问;

var dbfCmd = new OleDbCommand(@"SELECT ct_id, ct_cmpid, ct_empid, ct_pplid, ct_cntid, ct_pplnm, ct_date, ct_time, ct_type, ct_doneby, ct_desc FROM contacts", dbfCon);

我需要找到一种格式化ct_date列的方法。到目前为止,我已经尝试了很多方法,包括使用FDATEFORMAT,但到目前为止还没有任何工作。我查看了OleDB支持的命令,但仍未遇到任何问题。

任何人都可以告诉我格式化Date查询的正确方法,以便我可以导入MySQL吗?

3 个答案:

答案 0 :(得分:2)

请勿格式化服务器上​​的日期。

作为日期列接收,然后在枚举查询时读取DateTime值。最后,在编写文件时,以指定的方式在客户端上格式化它。

答案 1 :(得分:1)

虽然有人建议将C#中的数据转换为日期格式,但如果您真的想要从VFP OleDb查询格式化日期,则可以为日期列执行此操作

STUFF( STUFF( DTOS( ct_date ), 5, 0, "-"), 8, 0, "-" )

VFP功能DTOS会将日期(或日期时间)转换为字符串,并始终采用YYYYMMDD格式。 STUFF命令将插入连字符以正确设置为YYYY-MM-DD。

答案 2 :(得分:0)

你可以简单地使用ToString(" yyyy-MM-dd")但更好的是甚至不这样做。您可以直接连接到MySQL并使用VFP命令将数据插入其中,并通过ExecScript调用它。或者你可以直接从MySQL连接中的VFP导入(我不使用MySQL,但你可以用其他数据库,如MS SQL Server,postgreSQL等,所以我认为MySQL也有能力做到这一点)。 另一种替代方法是使用XML格式导入/导出,这比纯文本更可靠。 换句话说,您可以连接到MySQL和VFP,使用您的数据填充MySQL DataTable并提交更改。

IOW使用中间的文本文件将是我的最后一个建议。

PS:看看FileHelpers。