Google App Maker从MySQL获取DateTime字段值返回null求助
解决Google App Maker服务器脚本获取MySQL DateTime字段返回null的问题
早上好!针对你遇到的results.getDate('dt_Alta')返回null但无报错的问题,我整理了几个常见的排查和解决方向,你可以逐一尝试:
1. 确认字段名与查询语句的正确性
- 首先检查你的SQL查询语句,确保明确包含了
dt_Alta字段,如果SELECT时漏选了这个字段,结果集里自然没有对应数据,调用getDate会返回null。 - 注意MySQL的字段名大小写敏感性:在Linux环境下的MySQL默认区分大小写,确认你代码里的
dt_Alta和数据库表中的字段名完全一致(包括大小写)。
2. 尝试改用getString手动转换为Date对象
有时候JDBC驱动对MySQL DateTime类型的getDate支持可能存在兼容性问题,建议先获取字符串格式的日期,再转换为Date对象:
// 先获取字符串格式的DateTime值 var dateStr = results.getString('dt_Alta'); // 转换为Date对象并赋值 if (dateStr) { calcRecord.fct_f_FechaRecepcion = new Date(dateStr); }
3. 使用getTimestamp方法获取时间戳后转换
如果DateTime字段包含时间部分,getTimestamp方法可能更可靠,它能完整获取日期和时间信息,再转换为App Maker支持的Date对象:
var timestamp = results.getTimestamp('dt_Alta'); if (timestamp) { calcRecord.fct_f_FechaRecepcion = new Date(timestamp.getTime()); }
4. 验证MySQL DateTime的格式兼容性
确认数据库中dt_Alta字段的格式是标准的YYYY-MM-DD HH:MM:SS,如果是自定义格式(比如DD/MM/YYYY HH:MM),直接用new Date()转换可能失败,需要手动解析字符串:
var dateStr = results.getString('dt_Alta'); if (dateStr) { // 示例:处理DD/MM/YYYY HH:MM格式 var parts = dateStr.split(/[\/ :]/); calcRecord.fct_f_FechaRecepcion = new Date(parts[2], parts[1]-1, parts[0], parts[3], parts[4]); }
5. 确认App Maker字段类型匹配
检查calcRecord.fct_f_FechaRecepcion对应的模型字段类型是否为Date,如果是字符串类型,直接赋值Date对象可能导致异常或null,需要调整字段类型或转换为字符串存储。
你可以先通过console.log(results.getString('dt_Alta'))打印一下原始值,看看是否能获取到内容,这能帮你快速定位是查询问题还是转换问题。
内容的提问来源于stack exchange,提问作者José Gabiel Rodríguez Corpas
相关产品推荐
相关产品推荐

