我正在尝试找到一种方法来正确格式化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
列的方法。到目前为止,我已经尝试了很多方法,包括使用FDATE
和FORMAT
,但到目前为止还没有任何工作。我查看了OleDB
支持的命令,但仍未遇到任何问题。
任何人都可以告诉我格式化Date查询的正确方法,以便我可以导入MySQL吗?
答案 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。