当前位置: 首页 > article >正文

在 expressjs 中MySQL 的datetime类型,怎么插入数据

在Express.js中,当你需要与MySQL数据库交互并插入DATETIME类型的数据时,你通常会使用某种Node.js的MySQL客户端库,如mysqlmysql2mysql2/promise(后者提供了Promise API的支持,使得你可以使用async/await)。

以下是一个使用mysql2/promise库在Express.js中插入DATETIME类型数据的示例:

首先,确保你已经安装了mysql2

npm install mysql2

然后,在你的Express路由处理函数中,你可以这样做:

const express = require('express');
const mysql = require('mysql2/promise');

const app = express();
const PORT = 3000;

// 假设你已经有了数据库连接配置
const connection = await mysql.createConnection({
  host: 'localhost',
  user: 'yourUsername',
  database: 'yourDatabase',
  password: 'yourPassword'
});

// 注意:在实际应用中,你不应该在全局范围内创建连接,
// 而应该在需要的地方(如路由处理函数中)创建和销毁连接,
// 或者使用连接池来管理连接。

app.post('/add-datetime', async (req, res) => {
  try {
    // 假设你从请求体中获取了需要插入的日期时间(这里只是示例)
    // 在实际应用中,你可能需要验证和清理这些数据
    const { datetimeString } = req.body; // 假设客户端发送了一个名为datetimeString的字段

    // 但是,为了演示,我们直接使用JavaScript的Date对象和toISOString()方法来生成一个格式化的字符串
    // 注意:MySQL的DATETIME类型通常不需要时区信息,所以我们可以使用slice()来去掉toISOString()返回的字符串中的时区部分
    const datetime = new Date().toISOString().slice(0, 19).replace('T', ' '); // 转换为YYYY-MM-DD HH:MM:SS格式

    // 或者,如果你已经有了符合格式的字符串或来自客户端的验证过的数据,你可以直接使用它
    // const datetime = datetimeString; // 确保datetimeString是'YYYY-MM-DD HH:MM:SS'格式的

    // 构造SQL语句并执行插入操作
    // 注意:为了防止SQL注入,你应该使用参数化查询(这里已经通过?实现了)
    const [rows, fields] = await connection.execute(
      'INSERT INTO your_table_name (datetime_column) VALUES (?)',
      [datetime]
    );

    // 响应客户端
    res.json({ message: 'Datetime inserted successfully', affectedRows: rows.affectedRows });
  } catch (error) {
    // 处理错误
    console.error('Error inserting datetime:', error);
    res.status(500).json({ message: 'Error inserting datetime' });
  }
});

app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

// 注意:上面的代码示例为了简洁而省略了一些重要的细节,
// 比如错误处理和连接管理(在生产环境中,你应该使用连接池来管理数据库连接)。

然而,请注意,上面的代码中我使用了new Date().toISOString().slice(0, 19).replace('T', ' ')来生成一个符合MySQL DATETIME格式的字符串,这实际上是不必要的,因为mysql2/promise库会自动将JavaScript的Date对象转换为MySQL可接受的格式。因此,你可以直接将Date对象作为参数传递给execute方法,如下所示:

const datetime = new Date(); // 创建一个Date对象
// ...
await connection.execute(
  'INSERT INTO your_table_name (datetime_column) VALUES (?)',
  [datetime] // 直接传递Date对象
);

这样,mysql2/promise库就会负责将Date对象转换为DATETIME类型的字符串,并将其插入到数据库中。


http://www.kler.cn/news/319770.html

相关文章:

  • 使用java实现ffmpeg的各种操作
  • 使用现有的科技或许无法实现对人类智能的模拟
  • 从零开始,Docker进阶之路(一):Docker基础
  • LocalStorage
  • 力扣中等 33.搜索旋转排序数组
  • MySQL中的函数简单总结,以及TCL语句的简单讲解
  • 三范式,面试重点
  • 食品检测与分类系统源码分享
  • 18-pg内核之日志管理器(六)checkpoint
  • 密码管理器介绍
  • 学习篇 | Ollama 安装、运行大模型(CPU 实操版)
  • 第二十节:学习Redis缓存数据库实现增删改查(自学Spring boot 3.x的第五天)
  • uniApp 解决uniapp三方地图获取位置接口的请求次数限制问题,分别提供 Android 和 iOS 的实现方法(原生插件获取)
  • 宠物智能化听诊器的健康管理!
  • BOE(京东方)携多场景物联网创新应用亮相2024服贸会 “屏之物联”赋能数字经济
  • 深度学习:常见损失函数简介--名称、作用和用法
  • C Primer Plus 第7章——第二篇
  • 渗透测试工具 sqlmap 基础教程
  • Linux Shell: 使用 Expect 自动化 SCP 和 SSH 连接的 Shell 脚本详解
  • 模板初阶(C++)
  • 适合二开的web组态软件
  • Redis入门介绍
  • JAVA大学期末考试真题(带答案)
  • C++(9.23)
  • Profinet通讯电能计量装置 功能介绍
  • 智慧体育馆可视化:实时监控与智能管理
  • 滑动窗口算法第一弹(长度最小的子数组,无重复字符的最长子串 最大连续1的个数III)
  • C++: 继承
  • grafana 使用常见问题
  • Unity数据持久化4——2进制