我有一个datetime
类型的列
我想分开使用left()
&的日期和时间。由right()
或cast()
包围的convert()
如下所示:
Select BATCH,
LEFT( CAST(S_DATE AS VARCHAR(20)),12) AS ST_DATE,
RIGHT( CAST(S_DATE AS VARCHAR(20)),8) AS ST_TIME,
LEFT( CAST(E_DATE AS VARCHAR(20)),12) AS E_DATE,
RIGHT( CAST(E_DATE AS VARCHAR(20)),8) AS E_TIME
INTO CRYST2
From Z_BATCH;
这是datetime
列的实际格式: -
2015-10-01 14:00:00.000
但问题是它正在准确地分离日期和时间,但它不会以字符串形式返回输出,因为输出本身会转到日期和时间。时间格式分别在各自的列中。 以下是我得到的输出: -
1 Oct 1 2015 2:00PM Oct 1 2015 2:30PM
正如您可以清楚地看到我在日期时间到字符串转换后分隔的列仍然仅以某种日期时间格式提供输出。 请帮忙。
答案 0 :(得分:1)
这是我对datetime列的实际格式:
2015-10-01 14:00:00.000
不,不是。 datetime
值根本没有格式,它只代表一个时间点。只有在将其转换为字符串时才会获得格式。
转换日期时间值时,您根本没有指定任何格式,因此它将使用默认格式(0)。您可以使用您看到显示为(121)的日期时间值的格式来获得所需的结果:
Select BATCH,
LEFT( CAST(S_DATE AS VARCHAR(19),121),10) AS ST_DATE,
RIGHT( CAST(S_DATE AS VARCHAR(19),121),8) AS ST_TIME,
LEFT( CAST(E_DATE AS VARCHAR(19),121),10) AS E_DATE,
RIGHT( CAST(E_DATE AS VARCHAR(19),121),8) AS E_TIME
INTO CRYST2
From Z_BATCH;
答案 1 :(得分:0)
以正确的格式投射日期和时间,如:
CAST(S_DATE AS Time) AS ST_TIME
CAST(S_DATE AS Date) AS ST_Date
将返回:
14:00:00
2015-10-01
答案 2 :(得分:0)
使用格式CONVERT
的{{1}}来获得所需的结果,它始终返回格式120
yyyy-MM-dd hh:mm:ss
答案 3 :(得分:0)
如果您想以字符串格式获得结果,可以试试这个:
select convert(varchar(11),cast(S_DATE as date),106)
select convert(varchar(11),cast(S_DATE as time),100)
如果您尝试以日期和时间格式获得答案,请尝试以下操作:
CAST(S_DATE AS Time) AS ST_TIME
CAST(S_DATE AS Date) AS ST_Date