在varchar列中使用milisec存储当前日期时间 - mssql
我确实有一个varchar max列
我想在列中存储当前日期和mili秒
连接day-month-year-h-m-s-ms
喜欢
2304201310151515
答案 0 :(得分:3)
试试这个: -
SELECT REPLACE(CONVERT(varchar(max), getdate(), 103), '/', '')+
REPLACE(CONVERT(varchar(max), getdate(), 114), ':', '')
答案 1 :(得分:0)
试试这个 -
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)
答案 2 :(得分:0)
我不知道您使用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位数毫秒,那么将convert函数返回的字符限制为varchar(22)。
declare @date datetime = '20130423 10:15:15.15' -- Works in SQL 2008
select replace(replace(replace(replace(convert(varchar(22), @date, 121)
, '-', '')
, ':', '')
, '.', '')
, ' ', '')