格式化没有varchar强制转换的日期时间

时间:2013-05-30 08:44:54

标签: sql sql-server tsql

我有一个datetime字段。在此字段中,以此格式手动插入当前日期:

30/05/2013 0.00.00

我会自动化这个过程。所以我试图从GETDATE()函数中检索当前日期并使用CONVERT()函数解析它,但这只能使用varchar作为目标目标,但正如我所说:我仍然需要{{1 }}。我该怎么办?

2 个答案:

答案 0 :(得分:3)

日期时间全部以相同的通用格式存储。然后,您可以根据用户的区域设置或相应的指定格式将其撤回到报表或应用程序并进行格式化。

日期时间字段和/或对象没有格式。

如果要将当前日期插入日期时间字段(时间部分除外),请使用以下命令:

insert into [MyTable] ([DateField])
values (cast(floor(cast(getdate() as float)) as datetime)

这会将小时,分钟和秒重置为“0”

如果要插入日期参数​​,则可以使用以下内容:

cast(floor(cast(@dateParam as float)) as datetime)

如果您只想更改结果集中的格式,可以使用:

SET DATEFORMAT DMY

在语句的顶部,然后,无论何时将其转换为varchar,都不需要指定格式。

请记住,数据库不应该是格式化日期,您的UI应该处理这个

答案 1 :(得分:0)

要存储没有小时/分钟的当前日期,我通常会使用:

CONVERT(DATETIME, CONVERT(CHAR(10), GETDATE(), 102), 102)