在 sql 插入查询中将 datetime 转换为 smalldatetime

Posted

技术标签:

【中文标题】在 sql 插入查询中将 datetime 转换为 smalldatetime【英文标题】:Convert datetime to smalldatetime in sql insert query 【发布时间】:2016-02-17 03:19:49 【问题描述】:

我有一个这样的 INSERT 查询

INSERT INTO tna_temp_attendance VALUES('" + strEmpCode + "', CONVERT(SMALLDATETIME, '" + dtDateTime.ToString() + "'), 0, " + _inOutMode.ToString() + ", null, 0, 'CHO-', '" + strMachine + "')

当我执行这个查询时发生了这个错误 "将 varchar 数据类型转换为 datetime 数据类型导致值超出范围"

请帮忙

我的数据库有这个表“tna_temp_attendance” 它的列是

Emp_id char(6) Wdate smalldatetime Is_read Machine_Status Process_Status Is_Error Lo​​c_no char(4) IP varchar(16)

编辑

我也这样过了日期

CONVERT(SMALLDATETIME, '" + Convert.ToDateTime(dtDateTime.ToString("yyyy-MM-dd hh:mm:ss")) + "')

但它也不起作用

【问题讨论】:

请您再解释一下, 请提供将作为 sql 命令运行的最终字符串 最后的字符串被命名为dtDateTime 【参考方案1】:

我终于做到了。 我声明了一个字符串。

字符串 dt = DateTime.Now.ToString();

然后将其转换为日期时间

DateTime ndt = Convert.ToDateTime(dt);

然后我用了

CONVERT(SMALLDATETIME, CONVERT(DATETIME, '" + ndt + "'))

而且它奏效了。谢谢大家

【讨论】:

【参考方案2】:

尝试使用 ISO 格式将日期插入 SQL server,如下所示:

dtDateTime.ToString("yyyyMMdd")

【讨论】:

先生,我需要插入日期和时间,是否可以使用“yyyyMMdd hh:mm:ss”格式 是的,你可以使用它。 但它不起作用,当我使用 CONVERT(smalldatetime, '2015-01-01 08:11:01') 它工作正常,我需要传递我的日期变量而不是 '2015 -01-01 08:11:01'

以上是关于在 sql 插入查询中将 datetime 转换为 smalldatetime的主要内容,如果未能解决你的问题,请参考以下文章

在查询中将 DateTime.Ticks 转换为 MySQL DateTime

在 C# 中将字符串转换为 DateTime 并写入 SQL

在 SQL Server 中将 varchar 转换为 datetime [重复]

在 SQL 中将 DateTime 转换为“n Hours Ago”的最佳方法

如何在SQL Server中将datetime值转换为yyyymmddhhmmss?

使用 Entity Framework Core 在 LINQ 查询中将字符串转换为 DateTime