Datetime 如何更改sqflite数据库中的日期时间格式,使其仅显示日期?

Datetime 如何更改sqflite数据库中的日期时间格式,使其仅显示日期?,datetime,flutter,sqflite,Datetime,Flutter,Sqflite,我希望你能帮我解决这个问题!这几天来,我一直在为之焦头烂额,如果有任何帮助,我将不胜感激 我想在当前项目的sqflite表中添加一个“date”列。以下是数据库_helper.dart的代码: 导入'dart:io'; 导入“package:path/path.dart”; 导入“包:sqflite/sqflite.dart”; 导入“package:path_provider/path_provider.dart”; 类数据库助手{ 静态final _databaseName=“MyData

我希望你能帮我解决这个问题!这几天来,我一直在为之焦头烂额,如果有任何帮助,我将不胜感激

我想在当前项目的sqflite表中添加一个“date”列。以下是数据库_helper.dart的代码:

导入'dart:io';
导入“package:path/path.dart”;
导入“包:sqflite/sqflite.dart”;
导入“package:path_provider/path_provider.dart”;
类数据库助手{
静态final _databaseName=“MyDatabase.db”;
静态最终数据库版本=1;
静态最终表格='我的表格';
静态最终columnId=''u id';
静态最终columnName='name';
静态最终列龄='age';
静态最终列颜色=‘颜色’;
静态final columnDateTime='datetime';
//让这成为一个单身班
DatabaseHelper._privateConstructor();
静态最终DatabaseHelper实例=DatabaseHelper._privateConstructor();
//只有一个应用程序范围的数据库引用
静态数据库;
未来获取数据库异步{
如果(_database!=null)返回_database;
//第一次访问数据库时,延迟地实例化它
_数据库=等待_initDatabase();
返回数据库;
}
//这将打开数据库(如果数据库不存在,则创建数据库)
_initDatabase()异步{
目录文档Directory=await getApplicationDocumentsDirectory();
字符串path=join(documentsDirectory.path,_databaseName);
返回等待openDatabase(路径,
版本:_数据库版本,
onCreate:_onCreate);
}
//创建数据库表的SQL代码
Future\u onCreate(数据库数据库数据库,int版本)异步{
等待数据库执行(“”)
创建表$TABLE(
$columnId INTEGER主键,
$columnName文本不为空,
$columnAge整数不为空,
$ColumnColor文本不为空,
$columnDateTime文本不为空
)
''');
}
//辅助方法
//在数据库中插入一行,其中映射中的每个键都是列名
//并且该值是列值。返回值是
//插入的行。
未来插入(映射行)异步{
Database db=wait instance.Database;
返回等待数据库插入(表,行);
}
//所有行都作为映射列表返回,每个映射都位于其中
//列的键值列表。
Future queryAllRows()异步{
Database db=wait instance.Database;
返回等待数据库查询(表);
}
//所有方法(插入、查询、更新、删除)也可以使用
//原始SQL命令。此方法使用原始查询提供行计数。
Future queryRowCount()异步{
Database db=wait instance.Database;
返回Sqflite.firstIntValue(wait db.rawQuery('SELECT COUNT(*)FROM$table');
}
//这里我们假设映射中的id列已设置
//列值将用于更新行。
未来更新(映射行)异步{
Database db=wait instance.Database;
int id=行[columnId];
return wait db.update(表,行,其中:“$columnId=?”,其中rgs:[id]);
}
//删除id指定的行。受影响的行数为
//返回。只要行存在,该值应为1。
未来删除(int-id)异步{
Database db=wait instance.Database;
return wait db.delete(表,其中:“$columnId=?”,其中rgs:[id]);
}

}
是的,您可以利用intl的
日期格式化程序来实现以下目的:

import 'package:intl/intl.dart';
import 'package:test/test.dart';

void main() {
  final DateFormat dateOnlyFormat = DateFormat('yyyy.MM.dd');
  test(
      'assert that dateOnlyFormat returns only date part of a DateTime '
      'instance', () {
    final DateTime givenDateTime = DateTime(1995, 1, 1, 5, 5, 5, 5, 5);
    expect(dateOnlyFormat.format(givenDateTime), "1995.01.01");
  });

  test('assert that dateOnlyFormat parses the date as expected', () {
    const String givenDateString = "1995.01.01";
    expect(dateOnlyFormat.parse(givenDateString), DateTime(1995, 1, 1));
  });
}

如果您需要以其他方式自定义日期格式,请参阅
DateFormat
的类文档。

,列表中的最后一个选项感谢您的响应。不过,我还在努力解决这个问题!你的意思是我应该把它转换成整数而不是toIso8601String()?是的,这是最灵活的格式好的,非常感谢,我将尝试一下代码。为你的帮助干杯!当然,欢迎查阅官方文件