Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C到Mysql中的数据类型兼容性_Mysql_C - Fatal编程技术网

C到Mysql中的数据类型兼容性

C到Mysql中的数据类型兼容性,mysql,c,Mysql,C,使用MS VC++2008在C中实现Ctime()以运行应用程序时遇到了一个问题 通过使用ctime我将获得当前的时间格式,即Sun Jan 09 14:38:09 2011。有没有办法将上述格式转换为2012-01-09 14:38:09(MYSQL格式)。C语言中有直接函数吗 有什么建议吗?根据man-ctime(): asctime()和mktime()函数都接受一个参数 表示分解时间,分解时间表示为 年、月、日等 我想你可以使用这些其他函数来做你想做的事情。C中没有。使用mktime(或

使用MS VC++2008在C中实现
Ctime()
以运行应用程序时遇到了一个问题

通过使用
ctime
我将获得当前的时间格式,即Sun Jan 09 14:38:09 2011。有没有办法将上述格式转换为2012-01-09 14:38:09(MYSQL格式)。C语言中有直接函数吗


有什么建议吗?

根据
man-ctime()

asctime()和mktime()函数都接受一个参数 表示分解时间,分解时间表示为 年、月、日等


我想你可以使用这些其他函数来做你想做的事情。

C中没有。使用mktime(或mktime\u r)和sprintf来创建你自己的时间格式。

在我看来,处理这种(或任何其他)不匹配的唯一方法是将time()返回的原始值存储在表中;然后让任何应用程序(包括您的应用程序)将该值格式化为它想要向用户显示的任何安排

这种方法带来了三大好处:

  • 它利用了通用、简单且有良好文档记录的time\t格式,这意味着您可以放弃db,并确保任何人都可以解释和处理它,而无需进一步的工作/文档。StructTM和类ctime格式完全是任意的,三十年前由一些可怜的午夜程序员选择

  • 你可以避免那些想要在你的代码中实现国际化的人对你当之无愧的蔑视和愤怒

  • 最重要的是:它以一种你或其他任何人都可以排序/选择的格式存储时间,这对其他任何人来说都是不正确的


  • 我相信,最基本的一点是,你的桌子能被尽可能广泛地理解。您可以通过存储原始时间值来实现这一目标

    您可以使用(或)将
    时间转换为
    struct tm
    ,然后使用格式化日期

    例如:

    char out[20];
    time_t t0 = time(0);
    struct tm *tm0 = localtime(t0);
    strftime(out, sizeof out, "%Y-%m-%d %H:%M:%S", tm0);
    

    如果您需要不同数据库列的不同
    time\t
    值,请创建它们。
    然后转换为
    struct tm
    ,并按上述格式设置每种格式。
    例如:


    从评论中发布,以使OP能够接受作为答案

    使用sprintf(),而不是printf()。您可以使用(或)将
    时间
    转换为
    struct tm
    ,然后使用格式化日期。谢谢你的想法奏效了。还有一个疑问。如果我想在atable的三个文件中插入当前时间。但是三个计时应该略有不同。可以这样做吗?现在我可以确定所有三个文件都包含相同的时间。例如:12:05,12:08,12:10..像这样?获取3个不同的
    time\t
    值。将它们转换为
    struct tm
    ,并根据需要格式化每一个。示例:
    time\u t t0=time(0);时间t1=t0+3600;时间t2=t0+24*3600
    
    time_t t0 = time(0);       /* now */
    time_t t1 = t0 + 3600;     /* 1 hour from now */
    time_t t2 = t0 + 24*3600;  /* 1 day (24 hours) from now */