2012-03-20 58 views
4

我有一个表中的下列列:如何日期和时间转换为SQL Server中

Signed_In_Date    Signed_Out_Time 
11/1/2005 12:00:00 am  11/1/2005 10:27:00PM 

我想将它们转换成以下的输出:

Signed_In_Date  Signed_Out_Time 
11/1/2005  10:27:00PM 

是否有一个功能或SQL Server中的转换代码,将做到这一点?谢谢你的帮助。

+2

你存储这些日期为字符串?如果是这样,如果您计划对日期进行操作,则将这些字段转换为日期时间类型会更容易。无论如何,你应该可以这样做。 – 2012-03-20 11:38:27

+0

什么样的数据类型是那些列,你使用的是哪个版本的SQL Server,什么格式的日期是MM/dd或dd/MM? – AdaTheDev 2012-03-20 11:38:43

+0

最有可能的是,这里有一个功能。确切的答案可能取决于特定的SQL Server。 – brownian 2012-03-20 11:38:50

回答

1

尝试:

select CONVERT(VARCHAR(10),Signed_Out_Time,108) ,-- 108 is d/M/yyyy if you want mm/dd/yyy you should use 101 
CONVERT(VARCHAR(8),Signed_In_Date,103) 
+1

你需要超过8个来存储MM/DD/YYYY(或者DD/MM/YYYY,谁知道) - 所以使用'VARCHAR(10)'atleast :) – cairnz 2012-03-20 11:39:41

+0

@cairnz是啊我复制粘贴它应该是10和8. 11:11:11 – 2012-03-20 11:44:25

4

假设你指的是列DATETIME列,我会用下面的代码:

仅日期

SELECT CONVERT(VARCHAR(10), GETDATE(), 101) 

仅限时间

SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), GETDATE(), 100), 7)) 

您可以查看正在执行的查询/与它们一起玩here

2

对于Sign_In_Date使用

select CONVERT(VARCHAR(10),'11/1/2005 10:27:00PM',108) 

输出继电器:

11/1/2005 

对于Sing_Out_Time

declare @time time 
set @time=cast('11/1/2005 10:27:00PM' as Time) 
select convert(varchar(10),@time,100) 

输出:

10:27PM 
1

可以使用convert以日期时间格式更改为自己的理想格式:

SELECT CONVERT(VARCHAR(10),Signed_In_Date,101) as 'Signed_In_Date', 
     CONVERT(VARCHAR(10),Signed_Out_Time,108) as 'Signed_Out_Time'; 

更多日期格式,超出此链接:

http://www.sql-server-helper.com/tips/date-formats.aspx

相关问题