我相信这是2012年第一季的开始日期时间表示为字符串/ nvarchar:
SELECT CAST('2012-01-01 00:00:00.000' AS DATETIME)
它显示:
2012-01-01 00:00:00.000
如果我这样做:
DECLARE @CutOffDateTime DATETIME
SELECT @CutOffDateTime = CAST('2012-01-01 00:00:00.000' AS DATETIME)
PRINT @CutOffDateTime
它显示:
Jan 1 2012 12:00AM
恕我直言,是2012年1月中旬。上述字符串是否正确?为什么打印会改变实际时间?
答案 0 :(得分:2)
并不总是清楚什么时候" 12:00 am。"和"下午12点。" 表示。从拉丁语单词meridies(midday),ante(before)和post (之后),术语ante meridiem(上午)意味着在中午之前和之后 meridiem(p.m。)指中午之后。严格说来"中午" (中午)既不是在自己之前也不是在自身之后,即上午和下午。 不适用。[16]但是,从下午12:01开始是中午之后,是的 通常在下午12点延长此使用时间。表示中午。 离开 凌晨12点开始在当天午夜使用, 那天持续到当天上午12点01分。
来源:http://en.wikipedia.org/wiki/12-hour_clock
将日期时间格式化为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小时制,减少混乱的主要原因之一。