读取日期和时间类型数据

更新时间:
复制 MD 格式

Go SDK 可读取 SQL 查询结果中的 DATETIME、DATE 和 TIME 类型数据。

前提条件

  • 安装Tablestore Go SDK并初始化客户端。SQL 查询功能需要 1.7.4 及以上版本,建议使用最新版本。

  • 已为待操作的数据表或多元索引创建映射关系

功能说明

调用 SQLQuery 方法执行 SELECT 语句,并使用 SQL 日期和时间函数将数值转换为 DATETIMETIMEDATEfrom_unixtime 函数接收秒级 Unix 时间戳。

func (client *TableStoreClient) SQLQuery(request *SQLQueryRequest) (*SQLQueryResponse, error)

以下示例转换 example_tableevent_time 列的值,并使用对应方法读取三种类型。

request := &tablestore.SQLQueryRequest{Query: `
SELECT
    from_unixtime(event_time) AS datetime_value,
    time(from_unixtime(event_time)) AS time_value,
    date(from_unixtime(event_time)) AS date_value
FROM example_table
WHERE tenant_id = 1 AND pk = 'row1'`}

response, err := client.SQLQuery(request)
if err != nil {
    log.Fatalf("SQLQuery failed: %v", err)
}

for response.ResultSet.HasNext() {
    row := response.ResultSet.Next()
    datetimeValue, _ := row.GetDateTimeByName("datetime_value")
    timeValue, _ := row.GetTimeByName("time_value")
    dateValue, _ := row.GetDateByName("date_value")
    fmt.Println(datetimeValue, timeValue, dateValue.Format("2006-01-02"))
}

参数说明

SQLQueryRequest 包含以下参数。

名称

类型

说明

Query(必选)

string

要执行的 SELECT 语句。可使用 from_unixtimetimedate 等函数返回所需的日期和时间类型。

返回值

日期和时间类型字段通过 SQLRow 的以下方法读取。

SQL 类型

读取方法

Go 类型及说明

DATETIME

GetDateTime / GetDateTimeByName

time.Time。时区为 Go 运行环境的本地时区。

TIME

GetTime / GetTimeByName

time.Duration。

DATE

GetDate / GetDateByName

time.Time。返回 UTC 时区的日期值。