我们如何将字符串转换为日期时间并将其存储在 varchar 中

Posted

技术标签:

【中文标题】我们如何将字符串转换为日期时间并将其存储在 varchar 中【英文标题】:How can we covert the string to date time and store it in varchar 【发布时间】:2013-03-30 13:51:50 【问题描述】:

我在 mysql 数据库中使用varchar[1000]。我想将日期时间存储在该列中。然后我需要将其转换为datatime 并将其存储在varchar 中。我们可以转换并存储在varchar.

如有错误请见谅。任何帮助表示赞赏

【问题讨论】:

为什么要将datetime 存储为varchar?这就是为什么有 datetime 数据类型的原因。 让我们把它清除掉,如果你想将它保存在日期时间列中,只需以该格式发送它,如果你想将它保存为 varchar,那没关系,你可以使用任何格式发送它 @bluefeet 我将使用单列来保存整数、字符串和日期时间 1000 个字符对于日期时间来说似乎有点宽,不是吗? @Pa1:您可以在任何东西上调用.ToString(),并将结果存储为字符串。需要明确的是,您将“整数、字符串和日期时间”存储在varchar 列中。你 only 在那里存储字符串。如果你想存储整数和日期时间,你应该以正确的格式存储它们。 【参考方案1】:

明确地说,您DateTime 值存储在varchar 列中。您正在存储字符串值。这些字符串值可能包含数字字符或特定的字符序列,人们可能会将其解释为特定的东西(例如日期和/或时间),但它们仍然只是字符串。

因此,要将值转换为字符串,请从 the .ToString() method 开始。对于原始类型(例如整数和日期时间值),这将返回该类型的字符串表示。对于复杂类型,它将返回类的名称,因此您需要在该类中覆盖它。

您可以使用custom string formatting 进一步细化日期和时间值的字符串表示形式。

【讨论】:

【参考方案2】:

正如 cmets 中的其他人所提到的,您确实应该在这里重新考虑您的方法。但是,varchar 需要一个字符串,而不是日期时间,因此只需保存 string 表示的 datetime 值,无需转换。

【讨论】:

【参考方案3】:

也许做一个 varchar(10) 然后在你的 C# 代码中:

date.ToString("yyyy/MM/dd"); 

你可以这样格式化你的日期。

【讨论】:

听起来 OP 已经有了字符串表示,而不是 DateTime【参考方案4】:

varchar(1000) 毫无意义。如果您将日期和时间存储为字符串,则不需要超过 15-20 个字符(可能更少,具体取决于日期格式)。

您应该使用CAST 运算符将datetime 值转换为字符串:

CAST(dt AS varchar)

如果您需要生成组合来自多个字段的数据的输出,您可能希望使用一个视图来组合您想要放在一起的值,而不是在数据表中专门设置一个 1000 个字符的字段。 (提示:使用concat() 函数连接多个字符串。)

【讨论】:

我不仅存储datetime。根据要求,它可能是 integertext1000 个字符。这就是为什么它专用于varchar(1000) 查看我关于为此目的使用视图的说明。

以上是关于我们如何将字符串转换为日期时间并将其存储在 varchar 中的主要内容,如果未能解决你的问题,请参考以下文章

Oracle - 都获取 XML 日期字符串并将其转换为日期

如何在不同的字符串中查找日期并将其转换为正确的日期格式?

将日期时间转换为字符串格式并将其传递给查询

Django 自动将日期时间字符串转换为本地时区

C#将字符串转换为没有时间的日期时间

连接后如何转换为日期数据类型?