• 8949阅读
  • 7回复

QDateTime转换为sqllite 里的datetime [复制链接]

上一主题 下一主题
离线lanhxg
 
只看楼主 倒序阅读 楼主  发表于: 2012-05-12
关键词: QDatime
QDateTime转换为sqllite 里的datetime
我的数据表中有这个字段 "L_start_time datetime not null ,"    items 是个结构里面有个start_time 是QDateTime  
我现在要往我的表里面添加数据 ,这里 ret = query.exec(。。)返回是 false
我估计是我的
QDateTime转换为sqllite 里的datetime有问题,是错的。但是我不懂怎么转换!求大伙帮助
bool DatabaseManager::InsertItemsToLaw(Item * items , int cnt )
{
    bool ret = true;
    QSqlQuery query;


    if(!db.open()|| cnt<=0 )
    {
        qWarning("db open fails or para invalid");
        return false ;
    }
   /*
    规律事件表:Law_Event
       ret = query.exec("create table IF NOT EXISTS Law_Event "
                        "( L_law_id  integer primary key autoincrement, "
                        "L_start_time datetime not null ,"
                        "L_delay_time integer , "
                        "L_ahead_time integer , "
                        "L_warn_type  integer(2) not null ,"
                        "L_music_addr varchar(100) ,"
                        "L_describe varchar(1000) )"
                        );
    */


    for(int i = 0 ; i < cnt && ret ; i++)
    {

       ret = query.exec(QString("insert into Law_Event values( '','%1','%2','%3' ,'%4' ,'%5' ,'%6')")
            .arg(items.start_time.toString()).arg(QString::number(items.delay_time)).arg(QString::number(items.ahead_time))
             .arg(QString::number(items.warn_type)).arg(QString(items.delay_time)).arg(items.describe));
       qDebug() << ret ;


    }
    return ret ;
}
离线ppdayz

只看该作者 1楼 发表于: 2012-05-16
回 楼主(lanhxg) 的帖子
关于时间的问题。。个人比较建议用unix时间戳。。这个东西比较好使
离线淳于半邪

只看该作者 2楼 发表于: 2012-05-16
数据库总取出的是struct  tm格式 ;
可以这么写struct tm t ;
                 数据库中取值
                 time_t tt = mktime(&t) ;
                QDataTime::setTime_t(tt) ;
反向转类似
setTime_t改为toTime_t
mktime改为localtime

离线zhuzhongning

只看该作者 3楼 发表于: 2012-05-18
    我也遇到了这个问题,现在搞明白了,希望对大家有帮助···
   QDateTime datetime=QDateTime::currentDateTime();
    QString strtime=datetime.toString("\"yyyy-MM-dd hh:mm:00\"");
    //或者是QString strtime=datetime.toString("\'\'yyyy-MM-dd hh:mm:00\'\'");
    QSqlQuery query;
    query.exec("select * from table1 where time="+strtime);
    qDebug()<<"select * from sensordataarea1 where time="+strtime;//输出查看sql语句格式或在终端中使用#sqlite3 验证
    qDebug()<<query.exec();//查看查询语句是否执行
thesuperzzn
离线淳于半邪

只看该作者 4楼 发表于: 2012-05-18
回 3楼(zhuzhongning) 的帖子
大哥,你这个数据库保存的时间是QString
离线ppdayz

只看该作者 5楼 发表于: 2012-05-20
数据库里保存unix时间戳,用的时候取出来转换下,很简单的事情,为什么非要存时间呢?
离线qxwq123t

只看该作者 6楼 发表于: 2013-01-15
学习了,时间用unix时间戳。然后进行转换。
离线realfan

只看该作者 7楼 发表于: 2013-01-15
回 4楼(淳于半邪) 的帖子
datetime类型字段,也是可以支持字符串格式的,只要格式正确
快速回复
限100 字节
 
上一个 下一个