Sql server 如何从SQL中的DateTime格式获取时间?
我只想使用SQL查询从DateTime列获取时间 使用SQLServer2005和2008 默认输出:Sql server 如何从SQL中的DateTime格式获取时间?,sql-server,tsql,sql-server-2005,datetime,Sql Server,Tsql,Sql Server 2005,Datetime,我只想使用SQL查询从DateTime列获取时间 使用SQLServer2005和2008 默认输出: AttDate == 2011-02-09 13:09:00 2011-02-09 14:10:00 我想要这个输出: AttDate Time == 2011-02-09 13:09:00 13:09 2011-02-09 14:10:00 14:10 SQL Server 2008+具有“
AttDate
==
2011-02-09 13:09:00
2011-02-09 14:10:00
我想要这个输出:
AttDate Time
==
2011-02-09 13:09:00 13:09
2011-02-09 14:10:00 14:10
SQL Server 2008+具有“时间”数据类型
对于旧版本,不带varchar转换
SELECT
..., DATEADD(dd, DATEDIFF(dd, MyDateTimeCol, 0), MyDateTimeCol)
FROM
...
SQL Server 2008:
SELECT cast(AttDate as time) [time]
FROM yourtable
早期版本:
SELECT convert(char(5), AttDate, 108) [time]
FROM yourtable
假设Sql server
选择CONVERT(VARCHAR(8),GETDATE(),108)
从您的表名中选择AttDate,CONVERT(char(5),AttDate,108)[Time],如果您希望以这种样式显示日期:2013年10月23日上午10:30
用这个
SELECT CONVERT(NVARCHAR(30),getdate(), 100)
convert()
方法接受3个参数
数据类型
列/值
样式:可用的样式从100到114。您可以在范围内从中进行选择。逐个选择以更改日期格式
试试这个:
select convert(nvarchar,CAST(getdate()as time),100)
我经常使用此脚本从DateTime获取时间:
SELECT CONVERT(VARCHAR(9),RIGHT(YOURCOLUMN_DATETIME,9),108) FROM YOURTABLE
要从datetime获取时间,我们可以使用
SELECT CONVERT(VARCHAR(20), GETDATE(), 114)
从datetime(无毫秒堆栈)获取时间的最简单方法是:
SELECT convert(time(0),getDate())
试试这个
- 日期到时间
select cast(getdate() as time(0))
- 时间到了
select cast(orig_time as time(0))
从表名称中选择substr(to_char(列名称,'DD/MM/rrrrr HH:MM:SS'),11,19)代码>
输出:来自
05:11:26
05:11:24
05:11:24
这将是一个很好的条款。例如:
(select cast(start_date as time(0))) AS 'START TIME'
试试这个,它会起作用的:
CONVERT(VARCHAR(8),DATETIME,114)
对于您的。获取服务器的日期
SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), GETDATE(), 100), 7)) FROM TABLENAME WHERE ...
或
如果它存储在表中
SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), datename, 100), 7)) FROM TABLENAME WHERE ...
结果:
上午11:41
MSSQL2012或更高版本
cast(dateadd(ms,datediff(ms, [StartDateTime], [StopDateTime]),0) as Time(0))
……或者
convert(time(0),dateadd(ms,datediff(ms, [StartDateTime], [StopDateTime]),0) )
SQL Server 2012:
Select TRY_CONVERT(TIME, myDateTimeColumn) from myTable;
就我个人而言,我更喜欢尝试使用CONVERT()来转换()。主要区别在于:如果强制转换失败,TRY\u CONVERT()返回NULL,而CONVERT()会引发错误。您可以使用以下方法:
SELECT CONVERT(VARCHAR(5), GETDATE(),8)
输出:
08:24
在sql中搜索to_char方法。您可以指定格式并获得所需的输出SELECT convert(varchar(10),getdate(),108)。对于sql Server,它可以是SELECT convert(varchar(8),getdate(),108)
为什么不使用此SELECT convert(varchar(8),getdate(),108)作为小时数秒,convert(varchar(8),getdate(),101)AS DateOnly是否存在任何性能问题?@rahularyansharma:如果需要,我不会对日期使用varchar转换。先生,我想知道,如果我们使用此方法而不是您的解决方案,是否会导致性能下降?@rahularyansharma:您可以基于此对任何不遵守的人进行测试,0
表示最小日期1900-01-01
。因此,这将获得列值与0之间的(负)天数,然后将这些负天数添加到列值中,该列值将日期部分“调零”到1900-01-01
,您只剩下时间。不起作用给出错误“to_char”不是可识别的内置函数名。
它仅在getdate()上起作用当我通过select convert(varchar(8),'2011-02-09 13:09:00',108)时,它产生了日期的前8个字符。如何解决这个问题?为什么我在时间之前得到了9个字符。。结果:晚上9时11分21分
Select TRY_CONVERT(TIME, myDateTimeColumn) from myTable;
SELECT CONVERT(VARCHAR(5), GETDATE(),8)
08:24