大连甘井子区地图,深圳seo网站推广公司,全屋定制一般多少钱,百度引擎入口官网TDengine NOW() 函数用户使用手册
目录
功能概述函数语法返回值说明技术特性使用场景及示例时间运算操作注意事项常见问题
功能概述
NOW() 函数是 TDengine 中的时间函数#xff0c;用于获取客户端当前系统时间。该函数在时序数据库中特别有用#xff0c;可以用于数据插入…
TDengine NOW() 函数用户使用手册
目录
功能概述函数语法返回值说明技术特性使用场景及示例时间运算操作注意事项常见问题
功能概述
NOW() 函数是 TDengine 中的时间函数用于获取客户端当前系统时间。该函数在时序数据库中特别有用可以用于数据插入、时间过滤、时间计算等多种场景。
函数语法
NOW()返回值说明
数据类型TIMESTAMP时间精度与当前 DATABASE 设置的时间精度一致时间格式根据数据库精度返回相应格式的时间戳
技术特性
时间精度支持
根据源码分析NOW() 函数支持以下时间精度
毫秒精度 (TSDB_TIME_PRECISION_MILLI)微秒精度 (TSDB_TIME_PRECISION_MICRO)纳秒精度 (TSDB_TIME_PRECISION_NANO)
适用范围
表类型适用于表和超级表字段类型在 WHERE 或 INSERT 语句中只能作用于 TIMESTAMP 类型字段嵌套查询支持内层查询和外层查询
使用场景及示例
1. 基础查询获取当前时间
-- 获取当前系统时间
SELECT NOW() AS current_timestamp;输出示例
-------------------------
| current_timestamp |
-------------------------
| 2025-09-03 14:30:25.123 |
-------------------------2. 数据插入场景
创建表结构
-- 创建传感器数据表
CREATE STABLE sensors (ts TIMESTAMP,temperature FLOAT,humidity FLOAT
) TAGS (device_id INT, location NCHAR(50));-- 创建子表
CREATE TABLE sensor_001 USING sensors TAGS (1, 北京机房);插入当前时间数据
-- 使用 NOW() 插入当前时间戳
INSERT INTO sensor_001 VALUES (NOW(), 25.6, 60.8);-- 批量插入多条记录
INSERT INTO sensor_001 VALUES (NOW(), 25.6, 60.8),(NOW() - 1m, 25.2, 61.2),(NOW() - 2m, 24.8, 61.5);3. 数据查询和过滤
查询最近时间范围的数据
-- 查询最近1小时的数据
SELECT * FROM sensor_001
WHERE ts NOW() - 1h;-- 查询最近24小时的数据
SELECT * FROM sensor_001
WHERE ts BETWEEN NOW() - 1d AND NOW();-- 查询今天的数据
SELECT * FROM sensor_001
WHERE ts TODAY() AND ts NOW();实时数据监控
-- 查询最近5分钟内的平均温度
SELECT AVG(temperature) as avg_temp
FROM sensor_001
WHERE ts NOW() - 5m;-- 查询当前时间前后30秒的数据
SELECT * FROM sensor_001
WHERE ts BETWEEN NOW() - 30s AND NOW() 30s;4. 时间差计算
-- 计算数据记录距离当前时间的秒数差
SELECT ts, temperature, (NOW() - ts) / 1000000 AS seconds_ago
FROM sensor_001
ORDER BY ts DESC
LIMIT 10;-- 查找超过1小时未更新的设备
SELECT device_id, MAX(ts) as last_update,(NOW() - MAX(ts)) / 1000000 / 3600 AS hours_since_update
FROM sensors
GROUP BY device_id
HAVING hours_since_update 1;5. 数据分析场景
按时间窗口聚合
-- 按小时聚合最近24小时的数据
SELECT _wstart as hour_start,AVG(temperature) as avg_temp,MAX(temperature) as max_temp,MIN(temperature) as min_temp
FROM sensor_001
WHERE ts NOW() - 1d
INTERVAL(1h);-- 实时滑动窗口分析
SELECT _wstart,COUNT(*) as record_count,AVG(temperature) as avg_temp
FROM sensor_001
WHERE ts NOW() - 2h
INTERVAL(10m) SLIDING(1m);时间运算操作
NOW() 函数支持时间加减运算支持的时间单位包括
时间单位符号说明示例纳秒bnanosecondNOW() 100b微秒umicrosecondNOW() - 500u毫秒amillisecondNOW() 200a秒ssecondNOW() - 30s分钟mminuteNOW() 15m小时hhourNOW() - 2h天ddayNOW() 1d周wweekNOW() - 1w
时间运算示例
-- 各种时间单位的运算示例
SELECT NOW() as current_time,NOW() 1s as one_second_later,NOW() - 30m as thirty_minutes_ago,NOW() 2h as two_hours_later,NOW() - 1d as yesterday_same_time,NOW() 1w as next_week_same_time;-- 复合时间运算
SELECT * FROM sensor_001
WHERE ts BETWEEN NOW() - 1d - 30m AND NOW() - 30m;-- 时间边界查询
SELECT * FROM sensor_001
WHERE ts NOW() - 1h 100a; -- 1小时前再加100毫秒注意事项
1. 时间精度一致性
-- 确保时间精度与数据库设置一致
-- 如果数据库精度为毫秒NOW() 返回毫秒精度时间戳
-- 如果数据库精度为微秒NOW() 返回微秒精度时间戳2. 客户端时间 vs 服务器时间
-- NOW() 返回客户端系统时间不是服务器时间
-- 在分布式环境中需要注意时间同步问题3. 性能考虑
-- 在大量数据查询中建议将 NOW() 的结果先计算出来
-- 避免在循环或大量记录处理中重复调用 NOW()-- 推荐做法
SELECT current_time : NOW();
SELECT * FROM sensor_001 WHERE ts current_time - 1h;-- 不推荐在大数据量情况下
SELECT * FROM huge_table WHERE ts NOW() - 1h; -- 每行都会计算NOW()常见问题
Q1: NOW() 与 TODAY() 的区别
-- NOW() 返回完整的当前时间戳包含时分秒
SELECT NOW(); -- 2025-09-03 14:30:25.123-- TODAY() 返回当前日期的0点时间戳
SELECT TODAY(); -- 2025-09-03 00:00:00.000Q2: 如何处理时区问题
-- TDengine 中的时间戳通常是UTC时间
-- 需要在应用层进行时区转换
-- 或使用时区相关函数进行处理Q3: 在INSERT语句中使用NOW()的最佳实践
-- 对于实时数据推荐使用NOW()
INSERT INTO sensor_001 VALUES (NOW(), 25.6, 60.8);-- 对于批量导入历史数据使用具体时间戳
INSERT INTO sensor_001 VALUES (2025-09-03 10:00:00, 25.1, 60.2),(2025-09-03 10:01:00, 25.3, 60.5);Q4: NOW()在WHERE子句中的优化
-- 对于频繁查询可以预先计算时间边界
SET start_time NOW() - 1h;
SET end_time NOW();SELECT * FROM sensor_001
WHERE ts BETWEEN start_time AND end_time;总结
NOW() 函数是 TDengine 中非常重要的时间函数特别适用于
实时数据插入和时间戳记录时间范围查询和数据过滤时间差计算和数据分析实时监控和报警系统
正确使用 NOW() 函数可以大大提高时序数据处理的效率和准确性。在实际应用中需要注意时间精度、性能优化和时区处理等方面的问题。
关于 TDengine
TDengine 是一款专为物联网、工业互联网等场景设计并优化的大数据平台其核心模块是高性能、集群开源、云原生、极简的时序数据库。
它能安全高效地将大量设备每天产生的高达 TB 甚至 PB 级的数据进行汇聚、存储、分析和分发并提供 AI 智能体对数据进行预测与异常检测提供实时的商业洞察。