我们如何将字符串转换为日期时间并将其存储在 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
。根据要求,它可能是 integer
或 text
的 1000
个字符。这就是为什么它专用于varchar(1000)
查看我关于为此目的使用视图的说明。以上是关于我们如何将字符串转换为日期时间并将其存储在 varchar 中的主要内容,如果未能解决你的问题,请参考以下文章