在 varchar 列中使用 milisec 存储当前日期时间 - mssql
我确实有一个 varchar max 列我想在列中存储当前日期和毫秒day-month-year-h-m-s-ms
喜欢
2304201310151515
在 varchar 列中使用 milisec 存储当前日期时间 - mssql
我确实有一个 varchar max 列我想在列中存储当前日期和毫秒day-month-year-h-m-s-ms
喜欢
2304201310151515
尝试这个 :-
SELECT REPLACE(CONVERT(varchar(max), getdate(), 103), '/', '')+
REPLACE(CONVERT(varchar(max), getdate(), 114), ':', '')
试试这个——
DECLARE @date DATETIME
SELECT @date = GETDATE()
SELECT
REPLACE(CONVERT(VARCHAR(20), @date, 104), '.', '') +
LEFT(REPLACE(CONVERT(VARCHAR(20), @date, 114), ':', ''), 8)
DECLARE @text VARCHAR(20)
SELECT @text = '2304201310151515'
SELECT
CAST(
SUBSTRING(@text, 5, 4) +
SUBSTRING(@text, 3, 2) +
SUBSTRING(@text, 1, 2) AS DATETIME)
+
CAST(
SUBSTRING(@text, 9, 2) + ':' +
SUBSTRING(@text, 11, 2) + ':' +
SUBSTRING(@text, 13, 2) + '.' +
SUBSTRING(@text, 15, 2) AS TIME)
我不知道您使用 varchar 列做什么,但我强烈建议您使用 yyyymmddhhmmssmmm 格式,因为它是可排序的。
declare @date datetime = '20130423 10:15:15.15' -- Works in SQL 2008
select replace(replace(replace(replace(convert(varchar /* defaults to 30 char*/, @date, 121)
, '-', '')
, ':', '')
, '.', '')
, ' ', '')
此外,如果您真的想要 2 位数毫秒,则将从转换函数返回的字符限制为 varchar(22)。
declare @date datetime = '20130423 10:15:15.15' -- Works in SQL 2008
select replace(replace(replace(replace(convert(varchar(22), @date, 121)
, '-', '')
, ':', '')
, '.', '')
, ' ', '')