Tsql 日期时间字符串的一天开始时间

Tsql 日期时间字符串的一天开始时间,tsql,Tsql,我相信这是2012年1月1日的开始日期时间,用字符串/nvarchar表示: SELECT CAST('2012-01-01 00:00:00.000' AS DATETIME) 它表明: 2012-01-01 00:00:00.000 Jan 1 2012 12:00AM 如果我这样做: DECLARE @CutOffDateTime DATETIME SELECT @CutOffDateTime = CAST('2012-01-01 00:00:00.000' AS DATETIME

我相信这是2012年1月1日的开始日期时间,用字符串/nvarchar表示:

SELECT CAST('2012-01-01 00:00:00.000' AS DATETIME)
它表明:

2012-01-01 00:00:00.000
Jan  1 2012 12:00AM
如果我这样做:

DECLARE @CutOffDateTime DATETIME
SELECT @CutOffDateTime = CAST('2012-01-01 00:00:00.000' AS DATETIME)
PRINT @CutOffDateTime 
它表明:

2012-01-01 00:00:00.000
Jan  1 2012 12:00AM
2012年1月1日正午。上面的字符串正确吗?为什么打印会改变实际时间

“上午12:00”和“下午12:00”的时间并不总是很清楚 表示。来自拉丁语单词meridies(midday)、ante(before)和post (之后),术语“上午前”是指中午前和下午后 梅里迪姆(p.m.)指中午之后。严格地说是“中午” (正午)既不是在上午,也不是在下午。 不适用。[16]但是,因为下午12:01是中午之后,所以 将此用法扩展到12:00 p.m.以表示中午那就走了 凌晨12:00,用于一天开始的午夜, 持续到当天上午12:01

资料来源:

将datetime格式化为24小时时钟会将时间显示为00:00

DECLARE @CutOffDateTime DATETIME
SELECT @CutOffDateTime = CAST('2012-01-01 00:00:00.000' AS DATETIME)
PRINT @CutOffDateTime 
PRINT convert(varchar, @CutOffDateTime, 126)
输出

Jan  1 2012 12:00AM
2012-01-01T00:00:00
这是我喜欢24小时制的主要原因之一,因为它不那么混乱

…进一步阅读这里:

凌晨12点是午夜,谢谢-像泥一样清澈(((尽管对所有参考资料来说都有意义)