Go SDK 可读取 SQL 查询结果中的 DATETIME、DATE 和 TIME 类型数据。
前提条件
安装Tablestore Go SDK并初始化客户端。SQL 查询功能需要 1.7.4 及以上版本,建议使用最新版本。
已为待操作的数据表或多元索引创建映射关系。
功能说明
调用 SQLQuery 方法执行 SELECT 语句,并使用 SQL 日期和时间函数将数值转换为 DATETIME、TIME 或 DATE。from_unixtime 函数接收秒级 Unix 时间戳。
func (client *TableStoreClient) SQLQuery(request *SQLQueryRequest) (*SQLQueryResponse, error)
以下示例转换 example_table 中 event_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 |
要执行的 |
返回值
日期和时间类型字段通过 SQLRow 的以下方法读取。
|
SQL 类型 |
读取方法 |
Go 类型及说明 |
|
DATETIME |
GetDateTime / GetDateTimeByName |
time.Time。时区为 Go 运行环境的本地时区。 |
|
TIME |
GetTime / GetTimeByName |
time.Duration。 |
|
DATE |
GetDate / GetDateByName |
time.Time。返回 UTC 时区的日期值。 |
该文章对您有帮助吗?