Трудно подвести итог в ТАК ответ, но я попробую. Одна из проблем разработки объектов балансирует взгляды с полной точки зрения с размышлением с точки зрения отдельного объекта. Вам нужна полная перспектива для завершения вычисления, но Вам нужна перспектива отдельного объекта для эффективного подразделения логики и данных.
Сохранение этого равновесия состоит в том, где карты CRC входят. Когда они находятся там на таблице, Вы добираетесь для рассмотрения вычисления в целом. Когда Вы берете единственную карту, тем не менее, Вы физически, кинестетически поощряетесь взять точку зрения того одного объекта - у меня есть этот маленький кусочек этого вычисления, чтобы сделать с ограниченными ресурсами, как я собираюсь выполнить его?
Со временем, способность одновременно содержать обе перспективы, кажется, впитывается в мозг. Все меньше и меньше записан на картах. Тогда карты являются пробелом. Через некоторое время люди просто указывают туда, где карта была бы то, если они потрудятся брать пустого от стека. В конечном счете люди обладают преимуществами интеллектуального стиля, не нуждаясь в картах вообще. Когда разговор с кем-то, кто не освоил баланс, вытащив карты реалов, может быть полезной коммуникацией, помогают, все же.
самая большая слабость, которую я нахожу с картами, является отсутствием обратной связи. Можно одурачить себя о том, как код собирается сложиться. Я предложил бы использовать карты только, пока интересный вопрос не подходит, поворот к тестам/коду для подтверждения, и затем продолжите разрабатывать.
Ward и я сделали видео приблизительно 15 лет назад сессии дизайна, но я не нахожу его онлайн нигде, и у меня нет копии. Я не уверен, что это было бы полезно как обучающий инструмент в любом случае. Я не знаю о других видео, но они могли быть интересными, особенно если бы Вы добрались для сравнения стилей нескольких других разработчиков.
Тип данных DateTime ВСЕГДА хранит дату И время. Таким образом, вам остается использовать CONVERT / CAST для получения определенного формата или использовать методы YEAR (), MONTH () или DAY () для выделения деталей даты в зависимости от ваших потребностей.
Самое простое решение - просто не предоставлять пользователю временную часть. Однако, если вам действительно нужно убедиться, что сохранена только часть даты, вы можете принудительно установить часть времени на полночь / полдень / любое постоянное время перед сохранением значения.
Встроенный тип данных DATETIME хранит как дату, так и время. Если вы укажете только часть даты, то время будет 12:00:00 или что-то в этом роде.
Забавная история: однажды я видел базу данных, в которой были поля даты и времени, в которых оба хранились дата и время , но каждый использовался только для половины данных. Некоторые люди делают глупости :)
Если вы приведете DateTime к Int и обратно, вы получите DateTime с 00:00 в качестве временной части. Таким образом, вы можете сохранить все свои даты как целые числа в базе данных.
Either add a computed column:
dateonly AS CONVERT(DATETIME, CONVERT(CHAR(8), date_with_time, 112), 112)
or truncate your date right on insert:
INSERT
INTO mytable (dateonly)
VALUES CONVERT(DATETIME, CONVERT(CHAR(8), GETDATE(), 112), 112)
, making a CHECK
on your dateonly column to raise an error when someone tries to insert a non-truncated value:
CHECK (dateonly = CONVERT(DATETIME, CONVERT(CHAR(8), date_with_time, 112), 112))