Как преобразовать столбец метки времени SQL Server в формат datetime
как SQL Server возвращает метку времени, как 'Nov 14 2011 03:12:12:947PM', есть ли простой способ конвертировать строку в формат даты, например 'Y-m-d H:i:s'.
пока я использую
date('Y-m-d H:i:s',strtotime('Nov 14 2011 03:12:12:947PM'))
9 ответов:
SQL Server
TIMESTAMPтип данных имеет ничего сделать с датой и временем!это просто двоичное представление последовательного числа - это хорошо только для того, чтобы убедиться, что строка не изменилась с момента ее чтения.
в новых версиях SQL Server он называется
RowVersion- так как это действительно так. Смотрите MSDN docs on ROWVERSION:это тип данных, который автоматически выставляет сформированные уникальные двоичные числа в базе данных. типа rowversion обычно используется в качестве механизма для версии-штамповка строк таблицы. Этот тип данных rowversion -просто увеличивающееся число и не делает сохранить дату или время. Чтобы записать дату или время, используйте datetime2 тип данных.
так не может преобразование SQL Server
TIMESTAMPк дате / времени-это просто не дата / время.но если вы говорите метку времени, но на самом деле вы имеете в виду
С помощью Cast вы можете получить дату из поля timestamp:
SELECT CAST(timestamp_field AS DATE) FROM tbl_name
мои коллеги помогли мне с этим:
select CONVERT(VARCHAR(10), <tms_column>, 112), count(*) from table where <tms_column> > '2012-09-10' group by CONVERT(VARCHAR(10), <tms_column>, 112);или
select CONVERT(DATE, <tms_column>, 112), count(*) from table where <tms_column> > '2012-09-10' group by CONVERT(DATE, <tms_column>, 112);
работает нормально, кроме этого сообщения:
неявное преобразование из типа данных varchar в метку времени не допускается. Используйте функцию CONVERT для выполнения этого запроса
Так что да, отметка времени (RowVersion) является не свидание :)
честно говоря, я сам довольно долго возился, чтобы найти способ преобразовать его в дату.
лучший способ-преобразовать его в INT и сравнить. Вот что этот тип должен быть. Если вы хотите свидание-просто добавьте строка Datetime и жить счастливо с тех пор:)
ура mac
самый простой способ сделать это:
SELECT id,name,FROM_UNIXTIME(registration_date) FROM `tbl_registration`;это дает столбец даты по крайней мере в удобочитаемом формате. Далее, Если вы хотите изменить формат te нажмите здесь.
некоторые из них на самом деле скрытые до даты и времени с SQL Server 2008 далее.
попробуйте следующий SQL-запрос, и вы увидите сами:
SELECT CAST (0x00009CEF00A25634 AS datetime)вышеизложенное приведет к
2009-12-30 09:51:03:000но я встречал те, которые на самом деле не сопоставляются с датой-временем.
Не уверен, что я что-то пропустил здесь, но не можете ли вы просто преобразовать метку времени следующим образом:
CONVERT(VARCHAR,CAST(ZEIT AS DATETIME), 110)
Comments