首页 > 其他分享 >gorm查询时间去掉时区问题

gorm查询时间去掉时区问题

时间:2023-06-02 09:44:41浏览次数:37  
标签:return nil utils Time MyTime time 去掉 查询 gorm

gorm查询的时间格式是2022-03-03T14:32:05+08:00,这种格式不符合我们日常使用习惯,尤其是前端展示会额外占用单元格宽度

gorm不提供时间格式的配置,只能自定义个一个类型,继承time.Time,上代码,这个是网上一搜一堆的代码,没啥可以说的

package utils
 
import (
    "database/sql/driver"
    "fmt"
    "time"
)
 
// 1. 创建 time.Time 类型的副本 XTime;
type MyTime struct {
    time.Time
}
 
// 2. 为 Xtime 重写 MarshaJSON 方法,在此方法中实现自定义格式的转换;
func (t MyTime) MarshalJSON() ([]byte, error) {
    output := fmt.Sprintf("\"%s\"", t.Format("2006-01-02 15:04:05"))
    return []byte(output), nil
}
 
// 3. 为 Xtime 实现 Value 方法,写入数据库时会调用该方法将自定义时间类型转换并写入数据库;
func (t MyTime) Value() (driver.Value, error) {
    var zeroTime time.Time
    if t.Time.UnixNano() == zeroTime.UnixNano() {
        return nil, nil
    }
    return t.Time, nil
}
 
// 4. 为 Xtime 实现 Scan 方法,读取数据库时会调用该方法将时间数据转换成自定义时间类型;
func (t *MyTime) Scan(v interface{}) error {
    value, ok := v.(time.Time)
    if ok {
        *t = MyTime{Time: value}
        return nil
    }
    return fmt.Errorf("can not convert %v to timestamp", v)
} 

下面就是我们怎么在代码里使用:

1、utils.MyTime{Time: time.Now()} 初始化当前的时间就是time.Now()

2、utils.MyTime{Time: scriptResult.Info.ExecTime} 将time.Time类型转成utils.MyTime类型

3、utils.MyTime时间变量后面加.Time,可以转换成time.Time类型(但是这个时间会带有时区)

标签:return,nil,utils,Time,MyTime,time,去掉,查询,gorm
From: https://www.cnblogs.com/ccdr/p/17450910.html

相关文章

  • 解决用PLSQL Developer查询时数据大小超过100M的提示问题
    解决用PLSQLDeveloper查询时数据大小超过100M的提示问题Tools->Preferences->SQLWindowMaximumResultSetsize(0isunlimited)由100设置为0即可  解决PLSQLDeveloper字体太小的问题Tools->Preferences->USERINTERFACE->FONTS1.Browser设置PL/SQL中左侧......
  • 什么是ip地址?什么是物理地址? 如何查询网站IP地址和物理地址?
    ......
  • Mybatis 数据库Mysql时间范围内数据查询非常慢的解决办法
    表中数据量过大,目前已有300万条,查询user_name数据速度非常慢,如果不使用索引,想优化sql来提高查询速度,在调试过程中发现,写sql查询数据库时,传入时间段查询部分为:<!--大于开始时间-->andsw.TIME>=to_date(CONCAT('2018-09-10','00:00:00'),'yyyy-mm-ddhh24:mi:ss')<!--小于结束......
  • 自适应何必媒体查询
    自适应何必媒体查询简单的自适应可以使用grid布局的grid-template-columns和grid-gap属性实现例如:要实现一行三个div并自适应宽度,同时使用justify-items和align-items属性实现靠左,并使用margin属性实现中间间隔。HTML代码:<divclass="grid-container"><divclass="box"><......
  • 使用JPA实现分页和模糊查询
    1、首先创建DAO层接口,实现JpaRepository和JpaSpecificationExecutor两个接口JpaRepository<SysOperLog,Integer> 泛型参数分别是:要查询的实体(Entity),实体的主键类型JpaSpecificationExecutor<SysOperLog> 泛型参数:要查的实体 @RepositorypublicinterfaceSysOperLogReposit......
  • 解决mybatis-plus查询字段中含有关键词时异常问题
    在使用mybatis-plus查询mysql某张表的数据时,一直告警提示sqlsyntaxerror。于是,把异常提示里的sql语句复制到navicat执行,也提示sqlsyntaxerror。仔细看了下,发有几个字段在navigate里面标示为蓝色(这几个字段为sensitive、status、name),这几个字段在mysql里面是关键词。在查询语......
  • Doris(六) -- 查询语法和内置函数
    查询语法和内置函数查询语法整体结构SELECT[ALL|DISTINCT|DISTINCTROW]--对查询字段的结果是否需要去重,还是全部保留等参数select_expr[,select_expr...]--select的查询字段[FROMtable_references[PARTITIONpartition_list]......
  • mongocxx c++ 14标准,进行多表联合查询
     #include<mongocxx/client.hpp>#include<mongocxx/instance.hpp>#include<mongocxx/uri.hpp>#include<bsoncxx/builder/stream/document.hpp>#include<bsoncxx/json.hpp>#include<bsoncxx/types.hpp>usingbsoncxx::builder::s......
  • MyBatis+Sharding-JDBC实体类LocalDateTime类型字段查询报SQLFeatureNotSupportedExce
    问题最近协助渠道组开发新需求,封装实现了一个公共模块供不同渠道项目使用。以前各个渠道项目有很多相似的菜单和功能,各自项目里自己的代码实现,本公共模块对新需求的功能点进行抽象,减少重复代码,提高模块复用性和可维护性。目前有2个渠道项目接入了该公共模块,自测时发现其中1个运......
  • mysql使用索引优化查询效率
    索引的概念索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),包含着对数据表里所有记录的引用指针。通俗的来讲,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。在没有索引的情况下,数据库会遍历全部数据后选择符合条件的;而有了相应的索引之后,数据库会......