#c# #sql #datetime
#c# #sql #дата и время
Вопрос:
У меня есть столбец в таблице базы данных, то есть идентификатор транзакции. Его тип данных — var char(50). Теперь я хочу сохранить строку, объединив текущую дату с сгенерированным порядковым номером.
Например 10/9/2016
, это дата, поэтому первая транзакция сохраняется как 10920161, а следующая — как 10920162
и так далее. Порядковый номер сбрасывается на 1 после каждого дня.
Как я могу это сделать?
Комментарии:
1. Для какой СУБД это нужно? Пожалуйста, добавьте тег, чтобы указать, используете ли вы
mysql
,postgresql
,sql-server
,oracle
илиdb2
— или что-то совсем другое.
Ответ №1:
В SQL Server это может быть так просто, как:
transactionId =
CONCAT(DATEPART(MONTH, GETDATE()),
DATEPART(DAY, GETDATE()),
DATEPART(YEAR, GETDATE()),
(SELECT COUNT(1)
FROM tableName
WHERE CONVERT(DATE, dateColumn) = CONVERT(DATE, getdate())) 1)
Получите количество транзакций за эту дату и добавьте к нему единицу. Сопоставьте это с форматированной строкой сегодняшней даты.
Если у вас уже есть 3 записи на сегодняшнюю дату, результатом будет:
100920164
Запуск SQL-скрипки
Редактировать: EF предложил фрагмент:
string dateStr = DateTime.Today.ToString("Mdyyyy");
DateTime todayMidnight = DateTime.Today;
DateTime tomorrowMidnight = DateTime.Today.AddDays(1);
obj.transactionId = dateStr
context.tableName.Count(x=> x.dateColumn >= todayMidnight
amp;amp; x.dateColumn < tomorrowMidnight) 1;
Комментарии:
1. Но я добавил дату и время транзакции в целом для каждой транзакции. Это не только дата, но и время.
2. @AzherAleem
CONVERT(DATE, dateColumn)
извлекает часть даты из столбца DateTime. Проверьте скрипку SQL, в ней естьDateTime
столбец.3. @AzherAleem Просто преобразуйте приведенный выше запрос в linq!
4. @AzherAleem Проверьте редактирование, это фрагмент, который показывает идею, поиграйте с ним в соответствии с вашими потребностями. Если вы не знакомы с Entity framework, просмотрите учебник, поскольку это выходит за рамки этого вопроса !
5. я просто запустил его и сделал транзакции.