使用datetime字符串开始一天的时间

时间:2014-06-02 10:17:52

标签: tsql

我相信这是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月中旬。上述字符串是否正确?为什么打印会改变实际时间?

1 个答案:

答案 0 :(得分:2)

  

并不总是清楚什么时候" 12:00 am。"和"下午12点。"   表示。从拉丁语单词meridies(midday),ante(before)和post   (之后),术语ante meridiem(上午)意味着在中午之前和之后   meridiem(p.m。)指中午之后。严格说来"中午"   (中午)既不是在自己之前也不是在自身之后,即上午和下午。   不适用。[16]但是,从下午12:01开始是中午之后,是的   通常在下午12点延长此使用时间。表示中午。 离开   凌晨12点开始在当天午夜使用,   那天持续到当天上午1​​2点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小时制,减少混乱的主要原因之一。

..在这里进一步阅读:https://ux.stackexchange.com/questions/31119/how-to-avoid-1200-am-midnight-noon-confusion-in-a-time-input-field