如何将日期时间列转换为日期并显示为103样式

时间:2017-12-01 15:11:39

标签: sql-server sql-server-2008-r2

嗨,我有一个列__date,它有样本数据,如 1900-01-01 00:00:00.000 1990-01-01 00:00:00.000 1990-01-02 00:00:00.000 1990-01-03 00:00:00.000 1990-01-04 00:00:00.000 1990-01-05 00:00:00.000 1990-01-06 00:00:00.000 1990-01-07 00:00:00.000

现在我只想选择仅日期并将其显示为103样式并将列转换为日期格式。我尝试过这种语法convert(varchar,THE_DATE , 103)但是该列不是日期格式。 请帮助。

4 个答案:

答案 0 :(得分:1)

本作品尝试一次

SELECT CONVERT(varchar,CAST(DATE_TIME AS DATE),103)AS Date_Time From <yourTable>

答案 1 :(得分:0)

将字符串(或等效的数据库类型)转换为另一种类型称为“解析”。将另一种类型转换为字符串称为“格式化”。

DATEDATETIME类型(或前端中的等效类型)不会将日期存储为字符串,因此没有格式。数字用于表示内部日期,该日期计算自参考日期以来的天数(SQL Server的1753-01-01)。时间表示为小数。 当然,在打开表格时,您始终会看到日期格式化,因为它会转换为文本进行显示,但不会以格式化格式存储。

所以,如果您的日期是以文本形式提供的,那么您需要做的是使用121格式(YYYY-MM-DD HH:MI:SS.MMM(24h))解析它以获得{{1} }(或DATE)。

DATETIME

如果CONVERT(DATE, the_date, 121) or CONVERT(DATETIME, the_date, 121) 已经是the_date(或DATE)类型,并且您希望以103格式显示它(DD / MM / YYYY)

DATETIME

如果日期以CONVERT(VARCHAR(10), the_date, 103) 类型提供,您只想删除时间部分并再次将结果返回DATETIME,则可以执行

DATETIME

请注意,此处不涉及日期格式,因为日期永远不会显示为文本。

答案 2 :(得分:0)

这有点令人困惑,因为无论数据类型如何,您都会得到与CONVERT相同的答案。我将用2个声明的变量,1个datetime数据类型,另一个date数据类型来说明这一点:

DECLARE @mydatetime datetime = '1990-01-01 00:00:00.000'
DECLARE @mydate date = '1900-01-01'

SELECT convert(varchar,@mydatetime, 103) as mydatetime
SELECT convert(varchar,@mydate, 103) as mydate

产地:

mydatetime
01/01/1990

mydate
01/01/1900

所以你不需要投射到目前为止,然后是103格式。

如果您不喜欢表格中的日期时间(日期时间),那么您始终可以将表格中的列更改为日期数据类型。这可以使用SSMS完成,也可以执行SQL:

ALTER TABLE mytable ALTER COLUMN mycolumn DATE

其中DATE是新数据类型。然后只有日期存储在表格中。

答案 3 :(得分:0)

感谢您的所有答案,但对于拥有相同查询的任何人,我都可以从这里获得解决方案   solution