2013-04-08 50 views
-6

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

对不起,如果有任何错误。任何帮助表示赞赏

+7

为什么要将'datetime'作为'varchar'存储?这就是为什么有'datetime'数据类型。 – Taryn 2013-04-08 13:05:17

+0

让我们清除它,如果你想将它保存在日期时间列中,只需以 的格式发送它,并且如果你想将它保存为一个varchar,它将无关紧要,以任何格式发送它 – 2013-04-08 13:06:48

+0

@bluefeet I将有单列保存整数,字符串和日期时间 – Pa1 2013-04-08 13:07:03

回答

0

正如评论中提到的其他人一样,你真的应该在这里重新考虑你的方法。但是,varchar需要一个字符串,而不是日期时间,因此只需保存datetime值的string表示形式,无需进行任何转换。

0

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

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

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

+0

像OP这样的声音已经具有字符串表示形式,而不是'DateTime'。 – Sam 2013-04-08 13:18:20

1

要清楚,你在而不是varchar列中存储DateTime值。您正在存储字符串值。这些字符串值可能包含数字字符或特定的字符序列,人们可能会将其解释为某些特定的(如日期和/或时间),但它们仍然只是字符串。

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

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

0

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

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

CAST(dt AS varchar) 

如果你需要生成,从几个领域结合数据输出,您可能需要使用相结合的值的视图你想放在一起,而不是专门在数据表中使用1000个字符的字段。 (提示:使用concat()函数连接多个字符串。)

+0

我不仅存储'datetime'。根据要求,它可能是'整数'或'1000'字符的文本。这就是为什么它专用于'varchar(1000)' – Pa1 2013-04-09 05:09:42

+0

请参阅我的关于为此目的使用视图的说明。 – bwDraco 2013-04-09 11:25:49

相关问题