Sql 如何将datetime转换为时间格式
我有一个以sql返回日期时间格式的查询:Sql 如何将datetime转换为时间格式,sql,sql-server,datetime,sql-server-2012,Sql,Sql Server,Datetime,Sql Server 2012,我有一个以sql返回日期时间格式的查询: SELECT time_in FROM job_punch_card WHERE emp_key=47 and punch_day<= DATEADD(week, DATEDIFF(day, 0, getdate())/7, 0) 但我无法将此应用于我自己的查询。如何仅从上表中的time\u中检索时间?在输出列上使用相同的CONVERT功能: SELECT CONVERT(VARCHAR(8), time_in, 108) AS time
SELECT time_in
FROM job_punch_card
WHERE emp_key=47 and punch_day<= DATEADD(week, DATEDIFF(day, 0, getdate())/7, 0)
但我无法将此应用于我自己的查询。如何仅从上表中的
time\u中检索时间?在输出列上使用相同的CONVERT
功能:
SELECT CONVERT(VARCHAR(8), time_in, 108) AS time_in
FROM job_punch_card
WHERE emp_key=47 and punch_day<= DATEADD(week, DATEDIFF(day, 0, getdate())/7, 0)
选择CONVERT(VARCHAR(8),time_in,108)作为time_in
从工作打孔卡
其中emp_key=47和punch_day几乎完全相同:
SELECT CONVERT(VARCHAR(8), time_in, 108)
FROM job_punch_card
WHERE
emp_key=47 and
punch_day<= DATEADD(week, DATEDIFF(day, 0, getdate())/7, 0)
选择CONVERT(VARCHAR(8),time_in,108)
从工作打孔卡
哪里
emp_键=47和
打孔日尝试:
选择CONVERT(VARCHAR(8),time_in,108)作为time_in_time_only
从工作打孔卡
其中emp_key=47
如果您需要将其作为时间类型,请使用日期类型。如果您必须对结果集进行任何计算,这将使事情变得更容易
SELECT CAST(time_in AS TIME(0)) AS time_in
FROM job_punch_card
etc., etc.
将Getdate()
替换为中的time\u选择CONVERT(VARCHAR(8),time_in,108)
看起来像操作需要HH:MM:SS
。但这是毫秒级的结果,而且捕捉得很好!我试图避免使用CONVERT
函数,因为我从来都不喜欢像结尾处的108这样看起来随意的数值——我发现它们不可读。我可以添加一些代码来缩短时间,但这会使答案变得太复杂。虽然我很不喜欢它,CONVERT
是一种方式:)我会很快删除这个答案。你可以使用CAST(time\u in as time(0))
这将给出HH:MM:ssThank@mheptinstall,我意识到在我点击“添加评论”之后,我会立即更新我的答案。。。哎呀,看来是NoDisplayName处理的。感谢两位改进了答案!看起来OP需要HH:MM:SS
。但您的第二个查询的结果是Milliseconds@NoDisplayName然后使用TIME(0)
而不是TIME
,或者在应用程序中处理它,不管怎样,它都应该负责格式化。返回时间的数据类型有助于实现这一点。海报没有直接指定他们需要或不需要毫秒,只是希望能够提取时间。OP需要的结果类似于convert(..,108)
,其中不包括毫秒
SELECT CONVERT(VARCHAR(8),time_in,108) AS time_in_time_only
FROM job_punch_card
WHERE emp_key=47
and punch_day<= DATEADD(week, DATEDIFF(day, 0, getdate())/7, 0)
SELECT CAST(time_in AS TIME) AS time_in_time_only
FROM job_punch_card
WHERE emp_key=47
and punch_day<= DATEADD(week, DATEDIFF(day, 0, getdate())/7, 0)
SELECT CAST(time_in AS TIME(0)) AS time_in
FROM job_punch_card
etc., etc.